Handling Script Events

WebSocket (WebSocket and WebSocketStream) fires open, message, error and close; workers fire message and error; IndexedDB requests (IndexedDB) fire success, error and upgradeneeded; an AbortSignal fires abort. Uncaught exceptions and promise rejections reach window as error and unhandledrejection.

abort and unhandledrejection eventsHTMLLive
<pre style="margin:0"></pre>
<script>
  const log = (text) => document.querySelector("pre").append(text + "\n");
  const ctrl = new AbortController();
  ctrl.signal.onabort = (e) => log(`abort: ${e.target.reason}`);
  onunhandledrejection = (e) => { log(`rejection: ${e.reason.message}`); e.preventDefault(); };
  ctrl.abort("user left");
  Promise.reject(new Error("fetch failed"));   // preventDefault() above keeps the console clean
</script>
Browser output of Listing 8.47
Browser output of 47

Forward both global events to your error tracker, or uncaught failures reach only the user's console.