in lucid/scratch/js/src/load.js [115:156]
function load(url, namespace) {
// We will to create a namespace if we don't have one.
let ns = namespace != null ? namespace : Date.now() + "" + Math.random();
// Create a unique ID for this request
let requestID = "namespace:" + ns + ", url:" + url + ", random:" + Date.now() + "" + Math.random();
suppress.set(requestID, false);
// If we have a previous request in this namespace, mark it as suppressed so
// that the promise is never resolved. Then we reset the current namespace to
// the current request.
if (namespaces.has(ns)) {
const pendingRequestID = namespaces.get(ns);
suppress.set(pendingRequestID, true);
}
namespaces.set(ns, requestID);
return new Promise((resolve, reject) => {
let p;
if (Array.isArray(url)) {
const promises = url.map(u => _loadURL(u));
p = Promise.all(promises);
} else {
p = _loadURL(url);
}
p
.then(val => {
//check to see if we've suppressed this request.
if (!suppress.get(requestID)) {
resolve(val);
}
})
.catch(error => {
//check to see if we've suppressed this request.
if (!suppress.get(requestID)) {
reject(error);
}
});
});
}