
PASS Can get the ReadableStreamDefaultReader constructor indirectly 
PASS ReadableStreamDefaultReader constructor should get a ReadableStream object as argument 
FAIL ReadableStreamDefaultReader instances should have the correct list of properties assert_equals: method should be non-enumerable expected false but got true
PASS ReadableStreamDefaultReader closed should always return the same promise object 
PASS Constructing a ReadableStreamDefaultReader directly should fail if the stream is already locked (via direct construction) 
PASS Getting a ReadableStreamDefaultReader via getReader should fail if the stream is already locked (via direct construction) 
PASS Constructing a ReadableStreamDefaultReader directly should fail if the stream is already locked (via getReader) 
PASS Getting a ReadableStreamDefaultReader via getReader should fail if the stream is already locked (via getReader) 
PASS Constructing a ReadableStreamDefaultReader directly should be OK if the stream is closed 
PASS Constructing a ReadableStreamDefaultReader directly should be OK if the stream is errored 
PASS Reading from a reader for an empty stream will wait until a chunk is available 
PASS cancel() on a reader does not release the reader 
PASS closed should be fulfilled after stream is closed (.closed access before acquiring) 
PASS closed should be rejected after reader releases its lock (multiple stream locks) 
PASS Multiple readers can access the stream in sequence 
PASS Cannot use an already-released reader to unlock a stream again 
PASS cancel() on a released reader is a no-op and does not pass through 
PASS Getting a second reader after erroring the stream should succeed 
PASS Garbage-collecting a ReadableStreamDefaultReader should not unlock its stream 
PASS ReadableStreamDefaultReader closed promise should be rejected with undefined if that is the error 

