1) making a fake network request that will be intercepted by the service worker (say /zombie)
2) in the service worker, in your event handler for "fetch" you can check if it is your zombie request, and "event.waitUntil" a promise that you never resolve. (or resolve after a set amount of time or whatever)
self.addEventListener('fetch', function(event) {
console.log('fetching', event.request.url);
if (String(event.request.url).indexOf('zombie') >= 0) {
var forever = new Promise(function(resolve, reject) {
console.log('Never gonna resolve this promise');
});
// Hack to keep the service worker alive ... forever!
event.waitUntil(forever);
event.respondWith(forever);
} else {
event.respondWith(fetch(event.request));
}
});