async function doTest(e) { if (e.resultingClientId) { const promise = new Promise(async resolve => { let counter = 0; const client = await self.clients.get(e.resultingClientId); if (client) client.postMessage(counter++); if (e.request.url.includes("repeatMessage")) { setInterval(() => { if (client) client.postMessage(counter++); }, 100); } setTimeout(() => { resolve(fetch(e.request)); }, 1000); }); e.respondWith(promise); } } self.addEventListener("fetch", e => e.waitUntil(doTest(e)));