onmessage = async msg => { const reader = msg.data.readable.getReader(); let readResult = await reader.read(); postMessage(readResult.value); readResult.value.close(); // Continue reading until the stream is done due to a track.stop() while (true) { readResult = await reader.read(); if (readResult.done) { break; } else { readResult.value.close(); } } await reader.closed; postMessage('closed'); }