diff --git a/libraries/ghc-internal/src/GHC/Conc/IO.hs b/libraries/ghc-internal/src/GHC/Conc/IO.hs
index 24d4266477bdcf5f523be7d9ff835abf8fd498ed..e03decc0b76870950d86f8fd24046b687ca79f35 100644
--- a/libraries/ghc-internal/src/GHC/Conc/IO.hs
+++ b/libraries/ghc-internal/src/GHC/Conc/IO.hs
@@ -74,6 +74,11 @@ import GHC.Conc.Windows (asyncRead, asyncWrite, asyncDoProc, asyncReadBA,
 import qualified GHC.Event.Thread as Event
 #endif
 
+#if defined(wasm32_HOST_ARCH)
+import qualified GHC.Wasm.Prim.Conc as Wasm
+import qualified GHC.Wasm.Prim.Flag as Wasm
+#endif
+
 ensureIOManagerIsRunning :: IO ()
 #if defined(javascript_HOST_ARCH)
 ensureIOManagerIsRunning = pure ()
@@ -204,6 +209,8 @@ threadDelay time
 #if defined(mingw32_HOST_OS)
   | isWindowsNativeIO = Windows.threadDelay time
   | threaded          = Windows.threadDelay time
+#elif defined(wasm32_HOST_ARCH)
+  | Wasm.isJSFFIUsed  = Wasm.threadDelay time
 #elif !defined(javascript_HOST_ARCH)
   | threaded  = Event.threadDelay time
 #endif