summaryrefslogtreecommitdiff
path: root/runtime/js/30_os.js
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/js/30_os.js')
-rw-r--r--runtime/js/30_os.js9
1 files changed, 6 insertions, 3 deletions
diff --git a/runtime/js/30_os.js b/runtime/js/30_os.js
index 1d700b561..5a3c990b0 100644
--- a/runtime/js/30_os.js
+++ b/runtime/js/30_os.js
@@ -24,9 +24,12 @@
}
function exit(code = 0) {
- // Invokes the `unload` hooks before exiting
- // ref: https://github.com/denoland/deno/issues/3603
- window.dispatchEvent(new Event("unload"));
+ // Dispatches `unload` only when it's not dispatched yet.
+ if (!window[Symbol.for("isUnloadDispatched")]) {
+ // Invokes the `unload` hooks before exiting
+ // ref: https://github.com/denoland/deno/issues/3603
+ window.dispatchEvent(new Event("unload"));
+ }
core.jsonOpSync("op_exit", { code });
throw new Error("Code not reachable");
}