aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js')
-rw-r--r--src/bun.js/bindings/BunPlugin.cpp5
-rw-r--r--src/bun.js/bindings/ModuleLoader.cpp13
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;
}