aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ModuleLoader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/ModuleLoader.cpp')
-rw-r--r--src/bun.js/bindings/ModuleLoader.cpp13
1 files changed, 7 insertions, 6 deletions
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;
}