aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/javascript.zig
diff options
context:
space:
mode:
authorGravatar Zilin Zhu <zhuzilinallen@gmail.com> 2022-08-09 01:58:00 +0800
committerGravatar GitHub <noreply@github.com> 2022-08-08 10:58:00 -0700
commit02644ab65a65cdc30d8da68649885b06ca803cb2 (patch)
tree56679304b1d5b21287debe1f13b71e2602ee3b28 /src/bun.js/javascript.zig
parent98c2d20ab0168218d66bde4ef0afb80700f9373b (diff)
downloadbun-02644ab65a65cdc30d8da68649885b06ca803cb2.tar.gz
bun-02644ab65a65cdc30d8da68649885b06ca803cb2.tar.zst
bun-02644ab65a65cdc30d8da68649885b06ca803cb2.zip
Raise error on unhandled rejected promises (#1010)
* deal with unhandled rejected promise * use Vector<Strong<JSPromise>> to store rejected promises
Diffstat (limited to 'src/bun.js/javascript.zig')
-rw-r--r--src/bun.js/javascript.zig6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/bun.js/javascript.zig b/src/bun.js/javascript.zig
index 615a2003c..ee0e70bd7 100644
--- a/src/bun.js/javascript.zig
+++ b/src/bun.js/javascript.zig
@@ -272,6 +272,7 @@ comptime {
_ = Bun__getVM;
_ = Bun__drainMicrotasks;
_ = Bun__queueMicrotask;
+ _ = Bun__handleRejectedPromise;
_ = Bun__readOriginTimer;
}
}
@@ -280,6 +281,11 @@ pub export fn Bun__queueMicrotask(global: *JSGlobalObject, task: *JSC.CppTask) v
global.bunVM().eventLoop().enqueueTask(Task.init(task));
}
+pub export fn Bun__handleRejectedPromise(global: *JSGlobalObject, promise: *JSC.JSPromise) void {
+ const result = promise.result(global.vm());
+ global.bunVM().runErrorHandler(result, null);
+}
+
// If you read JavascriptCore/API/JSVirtualMachine.mm - https://github.com/WebKit/WebKit/blob/acff93fb303baa670c055cb24c2bad08691a01a0/Source/JavaScriptCore/API/JSVirtualMachine.mm#L101
// We can see that it's sort of like std.mem.Allocator but for JSGlobalContextRef, to support Automatic Reference Counting
// Its unavailable on Linux