aboutsummaryrefslogtreecommitdiff
path: root/src/bun_js.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun_js.zig')
-rw-r--r--src/bun_js.zig14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/bun_js.zig b/src/bun_js.zig
index 63ffe0611..72b7f8de9 100644
--- a/src/bun_js.zig
+++ b/src/bun_js.zig
@@ -248,6 +248,8 @@ pub const Run = struct {
vm.eventLoop().tick();
vm.eventLoop().tickPossiblyForever();
} else {
+ vm.exit_handler.exit_code = 1;
+ vm.onExit();
Global.exit(1);
}
}
@@ -279,6 +281,8 @@ pub const Run = struct {
vm.eventLoop().tick();
vm.eventLoop().tickPossiblyForever();
} else {
+ vm.exit_handler.exit_code = 1;
+ vm.onExit();
Global.exit(1);
}
}
@@ -315,6 +319,8 @@ pub const Run = struct {
vm.eventLoop().autoTickActive();
}
+ vm.onBeforeExit();
+
if (this.vm.pending_internal_promise.status(vm.global.vm()) == .Rejected and prev_promise != this.vm.pending_internal_promise) {
prev_promise = this.vm.pending_internal_promise;
vm.onUnhandledError(this.vm.global, this.vm.pending_internal_promise.result(vm.global.vm()));
@@ -332,6 +338,8 @@ pub const Run = struct {
vm.tick();
vm.eventLoop().autoTickActive();
}
+
+ vm.onBeforeExit();
}
if (vm.log.msgs.items.len > 0) {
@@ -347,10 +355,14 @@ pub const Run = struct {
vm.onUnhandledRejection = &onUnhandledRejectionBeforeClose;
vm.global.handleRejectedPromises();
+ if (this.any_unhandled and this.vm.exit_handler.exit_code == 0) {
+ this.vm.exit_handler.exit_code = 1;
+ }
+ const exit_code = this.vm.exit_handler.exit_code;
vm.onExit();
if (!JSC.is_bindgen) JSC.napi.fixDeadCodeElimination();
- Global.exit(@intFromBool(this.any_unhandled));
+ Global.exit(exit_code);
}
};