export default async function pipeStream(read, write, abort) { if (window.WritableStream && read.pipeTo) { const abortController = new AbortController(); if (abort) abort.abort = abortController.abort.bind(abortController); await read.pipeTo(write, abortController); } else { const writer = write.getWriter(); if (abort) abort.abort = writer.abort.bind(writer); const reader = read.getReader(); // eslint-disable-next-line no-constant-condition while (1) { const readResult = await reader.read(); if (readResult.done) { writer.close(); break; } else writer.write(readResult.value); } } } window.Hydro.utils.pipeStream = pipeStream;