const callbacks = {}

window.gotIt = (filename, data) => callbacks[filename](data)

export async function loadStaticJsonP(filename) {
  return new Promise((resolve, reject) => {
    const inFlight = callbacks[filename]
    if (inFlight === undefined) {
        const script = document.createElement("script")
        callbacks[filename] = data => {
            script.remove()
            delete callbacks[filename]
            resolve(data)
        }
        script.src = filename
        document.body.appendChild(script)
    } else {
        // already loading the same file, call the existing callback first
        callbacks[filename] = data => {
            inFlight(data)
            resolve(data)
        }
    }
  })
}