diff --git a/fuzz/fuzz_common.c b/fuzz/fuzz_common.c
index 9f1662ddf..cb17ffd4f 100644
--- a/fuzz/fuzz_common.c
+++ b/fuzz/fuzz_common.c
@@ -28,24 +28,35 @@ void reset_nbinterrupts() {
     nbinterrupts = 0;
 }
 
+JSContext *JS_NewCustomContext(JSRuntime *rt)
+{
+    JSContext *ctx = JS_NewContext(rt);
+    if (!ctx)
+        return NULL;
+
+    JS_AddIntrinsicBigFloat(ctx);
+    JS_AddIntrinsicBigDecimal(ctx);
+    JS_AddIntrinsicOperators(ctx);
+    JS_EnableBignumExt(ctx, 1);
+
+    js_init_module_std(ctx, "std");
+    js_init_module_os(ctx, "os");
+    return ctx;
+}
+
 void test_one_input_init(JSRuntime *rt, JSContext *ctx) {
     // 64 Mo
     JS_SetMemoryLimit(rt, 0x4000000);
     // 64 Kb
     JS_SetMaxStackSize(rt, 0x10000);
 
-    JS_AddIntrinsicBigFloat(ctx);
-    JS_AddIntrinsicBigDecimal(ctx);
-    JS_AddIntrinsicOperators(ctx);
-    JS_EnableBignumExt(ctx, 1);
     JS_SetModuleLoaderFunc(rt, NULL, js_module_loader, NULL);
     JS_SetInterruptHandler(JS_GetRuntime(ctx), interrupt_handler, NULL);
+    js_std_set_worker_new_context_func(JS_NewCustomContext);
     js_std_add_helpers(ctx, 0, NULL);
 
     // Load os and std
     js_std_init_handlers(rt);
-    js_init_module_std(ctx, "std");
-    js_init_module_os(ctx, "os");
     const char *str = "import * as std from 'std';\n"
                 "import * as os from 'os';\n"
                 "globalThis.std = std;\n"
diff --git a/fuzz/fuzz_common.h b/fuzz/fuzz_common.h
index 10cb49764..3987a01a4 100644
--- a/fuzz/fuzz_common.h
+++ b/fuzz/fuzz_common.h
@@ -18,5 +18,6 @@
 
 static int nbinterrupts = 0;
 
+JSContext *JS_NewCustomContext(JSRuntime *rt);
 void reset_nbinterrupts();
 void test_one_input_init(JSRuntime *rt, JSContext *ctx);
diff --git a/fuzz/fuzz_compile.c b/fuzz/fuzz_compile.c
index 0ab1b0331..5e832670f 100644
--- a/fuzz/fuzz_compile.c
+++ b/fuzz/fuzz_compile.c
@@ -27,7 +27,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         return 0;
 
     JSRuntime *rt = JS_NewRuntime();
-    JSContext *ctx = JS_NewContext(rt);
+    JSContext *ctx = JS_NewCustomContext(rt);
     test_one_input_init(rt, ctx);
 
     uint8_t *null_terminated_data = malloc(size + 1);
diff --git a/fuzz/fuzz_eval.c b/fuzz/fuzz_eval.c
index aa26f1efc..585187597 100644
--- a/fuzz/fuzz_eval.c
+++ b/fuzz/fuzz_eval.c
@@ -26,7 +26,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         return 0;
 
     JSRuntime *rt = JS_NewRuntime();
-    JSContext *ctx = JS_NewContext(rt);
+    JSContext *ctx = JS_NewCustomContext(rt);
     test_one_input_init(rt, ctx);
 
     uint8_t *null_terminated_data = malloc(size + 1);