diff --git a/DEPS b/DEPS
index b8815654..2dc7393 100644
--- a/DEPS
+++ b/DEPS
@@ -58,7 +58,7 @@
   # Checkout extra javascript engines for testing or benchmarking.
   # d8, the V8 shell, is always checked out.
   "checkout_javascript_engines": False,
-  "d8_tag": "version:10.6.91",
+  "d8_tag": "version:10.6.166",
   "jsshell_tag": "version:95.0",
 
   # As Flutter does, we use Fuchsia's GN and Clang toolchain. These revision
diff --git a/pkg/dart2wasm/bin/run_wasm.js b/pkg/dart2wasm/bin/run_wasm.js
index 3e40f5a..699d1ea 100644
--- a/pkg/dart2wasm/bin/run_wasm.js
+++ b/pkg/dart2wasm/bin/run_wasm.js
@@ -83,14 +83,14 @@
             dartInstance.exports.$call0(closure);
         }, milliseconds);
     },
-    futurePromise: WebAssembly.suspendOnReturnedPromise(
-        new WebAssembly.Function(
-            {parameters: ['externref'], results: ['externref']},
-            function(future) {
-                return new Promise(function (resolve, reject) {
-                    dartInstance.exports.$awaitCallback(future, resolve);
-                });
-            })),
+    futurePromise: new WebAssembly.Function(
+        {parameters: ['externref', 'externref'], results: ['externref']},
+        function(future) {
+            return new Promise(function (resolve, reject) {
+                dartInstance.exports.$awaitCallback(future, resolve);
+            });
+        },
+        {suspending: 'first'}),
     callResolve: function(resolve, result) {
         // This trampoline is needed because [resolve] is a JS function that
         // can't be called directly from Wasm.
@@ -364,7 +364,10 @@
 var dartInstance = instantiate(arguments[0], importObject);
 
 // Initialize async bridge.
-var asyncBridge = WebAssembly.returnPromiseOnSuspend(dartInstance.exports.$asyncBridge);
+var asyncBridge = new WebAssembly.Function(
+    {parameters: ['externref', 'externref'], results: ['externref']},
+    dartInstance.exports.$asyncBridge,
+    {promising: 'first'});
 
 // Call `main`. If tasks are placed into the event loop (by scheduling tasks
 // explicitly or awaiting Futures), these will automatically keep the script
diff --git a/sdk/lib/_internal/wasm/lib/async_patch.dart b/sdk/lib/_internal/wasm/lib/async_patch.dart
index ba75660..e9ed97e 100644
--- a/sdk/lib/_internal/wasm/lib/async_patch.dart
+++ b/sdk/lib/_internal/wasm/lib/async_patch.dart
@@ -64,7 +64,9 @@
 
 @pragma("wasm:export", "\$asyncBridge")
 WasmAnyRef? _asyncBridge(
-    WasmExternRef? stack, WasmDataRef args, Completer<Object?> completer) {
+    WasmExternRef? stack, WasmExternRef? argsRef, WasmExternRef? completerRef) {
+  WasmDataRef args = unsafeCastOpaque(argsRef!.internalize());
+  Completer<Object?> completer = unsafeCastOpaque(completerRef!.internalize());
   try {
     Object? result = _asyncBridge2(args, stack);
     completer.complete(result);
diff --git a/sdk/lib/wasm/wasm_types.dart b/sdk/lib/wasm/wasm_types.dart
index 0508a0a..cda6ba4 100644
--- a/sdk/lib/wasm/wasm_types.dart
+++ b/sdk/lib/wasm/wasm_types.dart
@@ -52,7 +52,7 @@
   WasmAnyRef? internalize() => _internalizeNullable(this);
 }
 
-// TODO(askesc): Add intrinsics for these when the `intern.externalize` and
+// TODO(askesc): Add intrinsics for these when the `extern.externalize` and
 // `extern.internalize` instructions are implemented in V8.
 @pragma("wasm:import", "dart2wasm.roundtrip")
 external WasmExternRef _externalizeNonNullable(WasmAnyRef ref);
