Source code

Revision control

Copy as Markdown

Other Tools

function setMessageHandler(response) {
onmessage = e => {
e.source.postMessage(response);
};
}
setMessageHandler("handler-before-throw");
// importScripts will throw when the ServiceWorker is past the "intalling" state.
importScripts(`empty.js?${Date.now()}`);
// When importScripts throws an uncaught exception, these calls should never be
// made and the message handler should remain responding "handler-before-throw".
setMessageHandler("handler-after-throw");
// There needs to be a fetch handler to avoid the no-fetch optimizaiton,
// which will skip starting up this worker.
onfetch = e => e.respondWith(new Response("handler-after-throw"));