sw-intercept-abort.js (533B)
1 async function messageClient(clientId, message) { 2 const client = await clients.get(clientId); 3 client.postMessage(message); 4 } 5 6 addEventListener('fetch', event => { 7 let resolve; 8 const promise = new Promise(r => resolve = r); 9 10 function onAborted() { 11 messageClient(event.clientId, event.request.signal.reason); 12 resolve(); 13 } 14 15 messageClient(event.clientId, 'fetch event has arrived'); 16 17 event.respondWith(promise.then(() => new Response('hello'))); 18 event.request.signal.addEventListener('abort', onAborted); 19 });