
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

