function wrapAsyncCb(callee) {
return async (callbackIndex, callbackData) => {
let success;
try {
await callee();
success = true;
} catch (e) {
console.error(e);
success = false;
} finally {
const sharedImports = getSharedImports();
sharedImports.__wasm_split.__indirect_function_table.get(callbackIndex)(callbackData, success);
}
}
}
function makeLoad(fetchOpts, deps) {
const fetcher = makeFetch(fetchOpts);
const loader = async () => {
const parallelStuff = deps.map(d => d());
const instantiate = fetcher();
await Promise.all(parallelStuff);
const imports = getSharedImports();
return instantiate(imports);
};
let loadingModule = undefined;
return () => {
if (loadingModule === undefined) {
const thisLoad = loader();
thisLoad.catch(() => {
if (loadingModule === thisLoad) loadingModule = undefined;
});
loadingModule = thisLoad;
}
return loadingModule;
}
}