self.addEventListener('install', e => e.waitUntil(skipWaiting())); self.addEventListener('activate', e => e.waitUntil(clients.claim())); self.addEventListener('message', async e => { const method = e.data; const promise = method === 'subscribe' ? self.registration.pushManager.subscribe({userVisibleOnly: true}) : Promise.resolve(); const message = await promise .then(() => { return `${method}: Unexpectedly started`; }) .catch((e) => { return e.message; }); e.source.postMessage(message); });