@@ -105,31 +105,30 @@ async function getSourceMapConsumer(sourceMapPath: string | null): Promise<Sourc
105
105
if ( sourceMapContent === null ) {
106
106
return null ;
107
107
}
108
- return new Promise < SourceMapHandler > ( ( resolve ) => {
109
- SourceMapConsumer . with ( sourceMapContent , null , ( consumer ) => {
110
- resolve ( consumer ) ;
111
- } ) ;
112
- } ) ;
108
+ return await new SourceMapConsumer ( sourceMapContent , undefined ) ;
113
109
}
114
110
115
111
export async function handleWebAssemblyError (
116
112
error : WebAssembly . RuntimeError ,
117
113
wasmPath : string
118
114
) : Promise < ExecutionError > {
119
- const wasmBuffer = await readFile ( wasmPath ) ;
120
- const sourceMapPath = parseSourceMapPath ( wasmBuffer . buffer as ArrayBuffer ) ;
121
- const sourceMapConsumer : SourceMapHandler | null = await getSourceMapConsumer ( sourceMapPath ) ;
122
- let stacks : NodeJS . CallSite [ ] = [ ] ;
115
+ let stackTrace : NodeJS . CallSite [ ] = [ ] ;
123
116
const originalPrepareStackTrace = Error . prepareStackTrace ;
124
117
Error . prepareStackTrace = ( _ : Error , structuredStackTrace : NodeJS . CallSite [ ] ) => {
125
- stacks = structuredStackTrace ;
118
+ stackTrace = structuredStackTrace ;
126
119
} ;
127
120
error . stack ; // trigger prepareStackTrace
128
121
Error . prepareStackTrace = originalPrepareStackTrace ;
122
+
123
+ const wasmBuffer = await readFile ( wasmPath ) ;
124
+ const sourceMapPath = parseSourceMapPath ( wasmBuffer . buffer as ArrayBuffer ) ;
125
+ const sourceMapConsumer : SourceMapHandler | null = await getSourceMapConsumer ( sourceMapPath ) ;
126
+ const stacks = stackTrace
127
+ . map ( ( callSite ) => createWebAssemblyCallSite ( callSite , { wasmPath, sourceMapConsumer } ) )
128
+ . filter ( ( callSite ) => callSite !== null ) ;
129
+ sourceMapConsumer ?. destroy ( ) ; // clean up the source map consumer
129
130
return {
130
131
message : error . message ,
131
- stacks : stacks
132
- . map ( ( callSite ) => createWebAssemblyCallSite ( callSite , { wasmPath, sourceMapConsumer } ) )
133
- . filter ( ( callSite ) => callSite !== null ) ,
132
+ stacks,
134
133
} ;
135
134
}
0 commit comments