
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
FAIL Calling cancel() on a readable ReadableStream that is not locked to a reader should return a promise whose fulfillment handler returns undefined assert_object_equals: value is undefined, expected object
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

