chromium/third_party/blink/web_tests/external/wpt/service-workers/service-worker/postMessage-client-worker.js

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)));