@@ -145,9 +145,11 @@ function getEmscriptenSettings(
145145 }
146146 const API = { config, lockFilePromise } ;
147147 let resolveReadyPromise : ( mod : Module ) => void ;
148- const readyPromise : Promise < Module > = new Promise (
149- ( res ) => ( resolveReadyPromise = res )
150- ) ;
148+ let rejectReadyPromise : ( e : any ) => void = ( ) => { } ;
149+ const readyPromise : Promise < Module > = new Promise ( ( res , rej ) => {
150+ resolveReadyPromise = res ;
151+ rejectReadyPromise = rej ;
152+ } ) ;
151153 const waitForDynlibs = getWaitForDynlibs ( resolveReadyPromise ! ) ;
152154 const prepareFileSystem = getPrepareFileSystem ( pythonStdlib ) ;
153155 const instantiateWasm = getInstantiateWasm ( pyodideWasmModule ) ;
@@ -161,6 +163,7 @@ function getEmscriptenSettings(
161163 instantiateWasm,
162164 reportUndefinedSymbolsNoOp ( ) : void { } ,
163165 readyPromise,
166+ rejectReadyPromise,
164167 API , // Pyodide requires we pass this in.
165168 } ;
166169}
@@ -210,7 +213,9 @@ export async function instantiateEmscriptenModule(
210213 for ( const _ of featureDetectionMonkeyPatchesContextManager ( ) ) {
211214 // Ignore the returned promise, it won't resolve until we're done preloading dynamic
212215 // libraries.
213- const _promise = _createPyodideModule ( emscriptenSettings ) ;
216+ const _promise = _createPyodideModule ( emscriptenSettings ) . catch ( ( e ) =>
217+ emscriptenSettings . rejectReadyPromise ( e )
218+ ) ;
214219 }
215220
216221 // Wait until we've executed all the preRun hooks before proceeding
0 commit comments