
PASS Creating a ReadableStream with an underlyingSource with type property set to 'bytes' should succeed 
PASS Calling error() with a this object different from ReadableByteStreamController should throw a TypeError 
PASS Calling close() with a this object different from ReadableByteStreamController should throw a TypeError 
PASS Calling enqueue() with a this object different from ReadableByteStreamController should throw a TypeError 
PASS Calling enqueue() when close has been requested but not yet performed should throw a TypeError 
PASS Calling enqueue() when stream is not readable should throw a TypeError 
PASS Calling enqueue() with a chunk that is not an object should trhow a TypeError 
PASS Calling enqueue() with a chunk that is not an ArrayBufferView should throw a TypeError 
PASS Calling error() after calling close() should throw a TypeError 
PASS Calling error() after calling error() should throw a TypeError 
PASS Calling close() after calling close() should throw a TypeError 
PASS Calling close() after calling error() should throw a TypeError 
PASS Calling read() on a reader associated to a controller that has been errored should fail with provided error 
PASS Calling read() on a reader associated to a controller that has been closed should not be rejected 
PASS Pending reading promise should be rejected if controller is errored (case where autoAllocateChunkSize is undefined) 
FAIL Pending reading promise should be rejected if controller is errored (case where autoAllocateChunkSize is specified) Can't find private variable: PrivateSymbol.Uint8Array
PASS Enqueuing a chunk, getting a reader and calling read should result in a promise resolved with said chunk 
PASS Getting a reader, calling read and enqueuing a chunk should result in the read promise being resolved with said chunk 
PASS Getting a reader, enqueuing a chunk and finally calling read should result in a promise resolved with said chunk 
PASS By default initial value of desiredSize should be 0 
PASS Calling cancel() on a readable ReadableStream that is not locked to a reader should return a promise whose fulfillment handler returns undefined 
PASS Test that pull is not called when a new ReadableStream is created with default strategy parameters and a ReadableByteStreamController 
PASS Test that pull is called once when a new ReadableStream is created with a highWaterMark of 1 and a ReadableByteStreamController 
PASS For a ReadableStream created with a highWaterMark of 1 and a ReadableByteStreamController, calling cancel after pull has thrown an error should result in a promise rejected with the same error 
PASS Calling cancel after creating a ReadableStream with an underlyingByteStream's start function returning a rejected promise should result in a promise rejected with the same error 
PASS Creating a ReadableStream with an underlyingSource with type property set to 'bytes' should succeed 
PASS Calling error() with a this object different from ReadableByteStreamController should throw a TypeError 
PASS Calling close() with a this object different from ReadableByteStreamController should throw a TypeError 
PASS Calling enqueue() with a this object different from ReadableByteStreamController should throw a TypeError 
PASS Calling enqueue() when close has been requested but not yet performed should throw a TypeError 
PASS Calling enqueue() when stream is not readable should throw a TypeError 
PASS Calling enqueue() with a chunk that is not an object should trhow a TypeError 
PASS Calling enqueue() with a chunk that is not an ArrayBufferView should throw a TypeError 
PASS Calling error() after calling close() should throw a TypeError 
PASS Calling error() after calling error() should throw a TypeError 
PASS Calling close() after calling close() should throw a TypeError 
PASS Calling close() after calling error() should throw a TypeError 
PASS Calling read() on a reader associated to a controller that has been errored should fail with provided error 
PASS Calling read() on a reader associated to a controller that has been closed should not be rejected 
PASS Pending reading promise should be rejected if controller is errored (case where autoAllocateChunkSize is undefined) 
FAIL Pending reading promise should be rejected if controller is errored (case where autoAllocateChunkSize is specified) Can't find private variable: PrivateSymbol.Uint8Array
PASS Enqueuing a chunk, getting a reader and calling read should result in a promise resolved with said chunk 
PASS Getting a reader, calling read and enqueuing a chunk should result in the read promise being resolved with said chunk 
PASS Getting a reader, enqueuing a chunk and finally calling read should result in a promise resolved with said chunk 
PASS By default initial value of desiredSize should be 0 
PASS Calling cancel() on a readable ReadableStream that is not locked to a reader should return a promise whose fulfillment handler returns undefined 
PASS Test that pull is not called when a new ReadableStream is created with default strategy parameters and a ReadableByteStreamController 
PASS Test that pull is called once when a new ReadableStream is created with a highWaterMark of 1 and a ReadableByteStreamController 
PASS For a ReadableStream created with a highWaterMark of 1 and a ReadableByteStreamController, calling cancel after pull has thrown an error should result in a promise rejected with the same error 
PASS Calling cancel after creating a ReadableStream with an underlyingByteStream's start function returning a rejected promise should result in a promise rejected with the same error 

