(stream)
| 1847 | } |
| 1848 | |
| 1849 | function 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, |
no test coverage detected
searching dependent graphs…