summaryrefslogtreecommitdiff
path: root/runtime/js/11_workers.js
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2022-04-13 10:50:57 +0100
committerGitHub <noreply@github.com>2022-04-13 11:50:57 +0200
commit4d18f558e4cfebc5b8d9d594401e3ce74fc3226b (patch)
treead13a194d22b3318cf862d9ae5214143f891930a /runtime/js/11_workers.js
parentd621ce1cf01ea9bb5562ea3bbed7c2d1db799c91 (diff)
feat(ext/web): Add error events for event listener and timer errors (#14159)
- feat: Add handleable error event for even listener errors - feat: Add handleable error event for setTimeout()/setInterval() errors - feat: Add Deno.core.destructureError() - feat: Add Deno.core.terminate() - fix: Don't throw listener errors from dispatchEvent() - fix: Use biased mode when selecting between mod_evaluate() and run_event_loop() results
Diffstat (limited to 'runtime/js/11_workers.js')
-rw-r--r--runtime/js/11_workers.js14
1 files changed, 8 insertions, 6 deletions
diff --git a/runtime/js/11_workers.js b/runtime/js/11_workers.js
index 80e85a3a1..5b8d03e71 100644
--- a/runtime/js/11_workers.js
+++ b/runtime/js/11_workers.js
@@ -140,14 +140,16 @@
error: null,
});
- let handled = false;
-
this.dispatchEvent(event);
- if (event.defaultPrevented) {
- handled = true;
+ // Don't bubble error event to window for loader errors (`!e.fileName`).
+ // TODO(nayeemrmn): Currently these are never bubbled because worker
+ // error event fields aren't populated correctly and `e.fileName` is
+ // always empty.
+ if (e.fileName && !event.defaultPrevented) {
+ window.dispatchEvent(event);
}
- return handled;
+ return event.defaultPrevented;
}
#pollControl = async () => {
@@ -165,7 +167,7 @@
} /* falls through */
case 2: { // Error
if (!this.#handleError(data)) {
- throw new Error("Unhandled error event in child worker.");
+ throw new Error("Unhandled error in child worker.");
}
break;
}