20 lines
760 B
JavaScript
20 lines
760 B
JavaScript
import { WebStreamByobReader } from './WebStreamByobReader.js';
|
|
import { WebStreamDefaultReader } from './WebStreamDefaultReader.js';
|
|
export function makeWebStreamReader(stream) {
|
|
try {
|
|
const reader = stream.getReader({ mode: "byob" });
|
|
if (reader instanceof ReadableStreamDefaultReader) {
|
|
// Fallback to default reader in case `mode: byob` is ignored
|
|
return new WebStreamDefaultReader(reader);
|
|
}
|
|
return new WebStreamByobReader(reader);
|
|
}
|
|
catch (error) {
|
|
if (error instanceof TypeError) {
|
|
// Fallback to default reader in case `mode: byob` rejected by a `TypeError`
|
|
return new WebStreamDefaultReader(stream.getReader());
|
|
}
|
|
throw error;
|
|
}
|
|
}
|