MCPcopy Index your code
hub / github.com/nodejs/node / readableByteStreamTee

Function readableByteStreamTee

lib/internal/webstreams/readablestream.js:1849–2119  ·  view source on GitHub ↗
(stream)

Source from the content-addressed store, hash-verified

1847}
1848
1849function readableByteStreamTee(stream) {
1850 assert(isReadableStream(stream));
1851 assert(isReadableByteStreamController(stream[kState].controller));
1852
1853 let reader = new ReadableStreamDefaultReader(stream);
1854 let reading = false;
1855 let readAgainForBranch1 = false;
1856 let readAgainForBranch2 = false;
1857 let canceled1 = false;
1858 let canceled2 = false;
1859 let reason1;
1860 let reason2;
1861 let branch1;
1862 let branch2;
1863 const cancelDeferred = PromiseWithResolvers();
1864
1865 function forwardReaderError(thisReader) {
1866 PromisePrototypeThen(
1867 readerClosedPromise(thisReader).promise,
1868 undefined,
1869 (error) => {
1870 if (thisReader !== reader) {
1871 return;
1872 }
1873 readableStreamDefaultControllerError(branch1[kState].controller, error);
1874 readableStreamDefaultControllerError(branch2[kState].controller, error);
1875 if (!canceled1 || !canceled2) {
1876 cancelDeferred.resolve();
1877 }
1878 },
1879 );
1880 }
1881
1882 function pullWithDefaultReader() {
1883 if (isReadableStreamBYOBReader(reader)) {
1884 readableStreamBYOBReaderRelease(reader);
1885 reader = new ReadableStreamDefaultReader(stream);
1886 forwardReaderError(reader);
1887 }
1888
1889 const readRequest = {
1890 [kChunk](chunk) {
1891 queueMicrotask(() => {
1892 readAgainForBranch1 = false;
1893 readAgainForBranch2 = false;
1894 const chunk1 = chunk;
1895 let chunk2 = chunk;
1896
1897 if (!canceled1 && !canceled2) {
1898 try {
1899 chunk2 = cloneAsUint8Array(chunk);
1900 } catch (error) {
1901 readableByteStreamControllerError(
1902 branch1[kState].controller,
1903 error,
1904 );
1905 readableByteStreamControllerError(
1906 branch2[kState].controller,

Callers 1

readableStreamTeeFunction · 0.85

Calls 4

createReadableByteStreamFunction · 0.85
forwardReaderErrorFunction · 0.85
assertFunction · 0.50
isReadableStreamFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…