diff options
Diffstat (limited to 'src/bun.js')
-rw-r--r-- | src/bun.js/bindings/BunPlugin.cpp | 5 | ||||
-rw-r--r-- | src/bun.js/bindings/ModuleLoader.cpp | 13 |
2 files changed, 9 insertions, 9 deletions
diff --git a/src/bun.js/bindings/BunPlugin.cpp b/src/bun.js/bindings/BunPlugin.cpp index ba1d40a0b..f7fa33377 100644 --- a/src/bun.js/bindings/BunPlugin.cpp +++ b/src/bun.js/bindings/BunPlugin.cpp @@ -300,6 +300,7 @@ extern "C" EncodedJSValue jsFunctionBunPlugin(JSC::JSGlobalObject* globalObject, JSFunction* function = jsCast<JSFunction*>(setupFunctionValue); JSC::CallData callData = JSC::getCallData(function); JSValue result = call(globalObject, function, callData, JSC::jsUndefined(), args); + RETURN_IF_EXCEPTION(throwScope, encodedJSValue()); if (auto* promise = JSC::jsDynamicCast<JSC::JSPromise*>(result)) { @@ -375,9 +376,7 @@ EncodedJSValue BunPlugin::OnLoad::run(JSC::JSGlobalObject* globalObject, ZigStri auto result = call(globalObject, function, callData, JSC::jsUndefined(), arguments); if (UNLIKELY(scope.exception())) { - JSC::Exception* exception = scope.exception(); - scope.clearException(); - return JSValue::encode(exception); + return JSValue::encode(scope.exception()); } if (auto* promise = JSC::jsDynamicCast<JSPromise*>(result)) { diff --git a/src/bun.js/bindings/ModuleLoader.cpp b/src/bun.js/bindings/ModuleLoader.cpp index dd5ea01ad..1383c891d 100644 --- a/src/bun.js/bindings/ModuleLoader.cpp +++ b/src/bun.js/bindings/ModuleLoader.cpp @@ -136,12 +136,17 @@ OnLoadResult handleOnLoadResultNotPromise(Zig::GlobalObject* globalObject, JSC:: auto scope = DECLARE_THROW_SCOPE(vm); BunLoaderType loader = BunLoaderTypeNone; + if (JSC::Exception* exception = JSC::jsDynamicCast<JSC::Exception*>(objectValue)) { + result.value.error = exception->value(); + scope.release(); + return result; + } + JSC::JSObject* object = objectValue.getObject(); if (UNLIKELY(!object)) { scope.throwException(globalObject, JSC::createError(globalObject, "Expected onLoad callback to return an object"_s)); result.value.error = scope.exception(); - scope.clearException(); - scope.release(); + result.type = OnLoadResultTypeError; return result; } @@ -171,8 +176,6 @@ OnLoadResult handleOnLoadResultNotPromise(Zig::GlobalObject* globalObject, JSC:: if (UNLIKELY(loader == BunLoaderTypeNone)) { throwException(globalObject, scope, createError(globalObject, "Expected loader to be one of \"js\", \"jsx\", \"object\", \"ts\", \"tsx\", \"toml\", or \"json\""_s)); result.value.error = scope.exception(); - scope.clearException(); - scope.release(); return result; } @@ -195,8 +198,6 @@ OnLoadResult handleOnLoadResultNotPromise(Zig::GlobalObject* globalObject, JSC:: if (UNLIKELY(result.value.sourceText.value.isEmpty())) { throwException(globalObject, scope, createError(globalObject, "Expected \"contents\" to be a string or an ArrayBufferView"_s)); result.value.error = scope.exception(); - scope.clearException(); - scope.release(); return result; } |