function synthesizeImage() { return clients.matchAll().then(clients => { var url = "image-40px.png"; clients.forEach(client => { client.postMessage(url); }); return fetch(url); }); } self.addEventListener("fetch", function(event) { if (event.request.url.indexOf("image-20px.png") >= 0) { event.respondWith(synthesizeImage()); } });