diff options
author | 2022-08-09 01:58:00 +0800 | |
---|---|---|
committer | 2022-08-08 10:58:00 -0700 | |
commit | 02644ab65a65cdc30d8da68649885b06ca803cb2 (patch) | |
tree | 56679304b1d5b21287debe1f13b71e2602ee3b28 /src/bun.js/javascript.zig | |
parent | 98c2d20ab0168218d66bde4ef0afb80700f9373b (diff) | |
download | bun-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.zig | 6 |
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 |