From 9d6bc5b61551a4f6c28c3b731025e383e4704688 Mon Sep 17 00:00:00 2001 From: Carson Katri Date: Thu, 20 Nov 2025 14:15:09 -0500 Subject: [PATCH] Fix module evaluation checks --- src/browser/js/Context.zig | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/browser/js/Context.zig b/src/browser/js/Context.zig index a936f471..6ac0dae0 100644 --- a/src/browser/js/Context.zig +++ b/src/browser/js/Context.zig @@ -1295,7 +1295,8 @@ fn _dynamicModuleCallback(self: *Context, specifier: [:0]const u8, referrer: []c // as a static import dependency), we need to evaluate it now. if (gop.value_ptr.module_promise == null) { const mod = gop.value_ptr.module.?.castToModule(); - if (mod.getStatus() == .kEvaluated) { + const status = mod.getStatus(); + if (status == .kEvaluated or status == .kEvaluating) { // Module was already evaluated (shouldn't normally happen, but handle it). // Create a pre-resolved promise with the module namespace. const persisted_module_resolver = v8.Persistent(v8.PromiseResolver).init(isolate, v8.PromiseResolver.init(self.v8_context)); @@ -1306,7 +1307,7 @@ fn _dynamicModuleCallback(self: *Context, specifier: [:0]const u8, referrer: []c } else { // the module was loaded, but not evaluated, we _have_ to evaluate it now const evaluated = mod.evaluate(self.v8_context) catch { - std.debug.assert(mod.getStatus() == .kErrored); + std.debug.assert(status == .kErrored); const error_msg = v8.String.initUtf8(isolate, "Module evaluation failed"); _ = resolver.reject(self.v8_context, error_msg.toValue()); return promise;