From d983b577bc903f18028a99d0a40a17322ac80ffe Mon Sep 17 00:00:00 2001 From: Andreu Botella Date: Tue, 29 Mar 2022 14:44:33 +0200 Subject: chore(wasm): Don't await on the argument to `handleWasmStreaming` (#14000) `handleWasmStreaming` is the function that provides the binding with the `fetch` API needed for `WebAssembly.instantiateStreaming()` and `WebAssembly.compileStreaming()`. When I implemented it in #11200, I thought V8 was calling these functions with the argument of the `WebAssembly` streaming functions, without doing any resolving, and so `handleWasmStreaming` awaits for the parameter to resolve. However, as discovered in https://github.com/denoland/deno/issues/13917#issuecomment-1065805565, V8 does in fact resolve the parameter if it's a promise (and handles rejections arising from that). This change removes the `async` IIFE inside `handleWasmStreaming`, letting initial errors be handled synchronously (which will however not throw synchronously from the `WebAssembly` namespace functions). Awaiting is still necessary for reading the bytes of the response, though, and so there is an `async` IIFE for that. --- cli/tests/testdata/wasm_streaming_panic_test.js.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cli/tests/testdata/wasm_streaming_panic_test.js.out') diff --git a/cli/tests/testdata/wasm_streaming_panic_test.js.out b/cli/tests/testdata/wasm_streaming_panic_test.js.out index c21d709dd..3e93f643a 100644 --- a/cli/tests/testdata/wasm_streaming_panic_test.js.out +++ b/cli/tests/testdata/wasm_streaming_panic_test.js.out @@ -1,2 +1,2 @@ error: Uncaught (in promise) TypeError: Invalid WebAssembly content type. - at deno:ext/fetch/26_fetch.js:[WILDCARD] + at handleWasmStreaming (deno:ext/fetch/26_fetch.js:[WILDCARD]) -- cgit v1.2.3