This is a testharness.js-based test.
PASS @@asyncIterator() method is === to getIterator() method
FAIL Async iterator instances should have the correct list of properties s.getIterator is not a function
FAIL Async-iterating a push source promise_test: Unhandled rejection with value: object "TypeError: s is not async iterable"
FAIL Async-iterating a pull source promise_test: Unhandled rejection with value: object "TypeError: s is not async iterable"
FAIL Async-iterating a pull source manually promise_test: Unhandled rejection with value: object "TypeError: s.getIterator is not a function"
FAIL Async-iterating an errored stream throws assert_equals: expected (string) "e" but got (object) object "TypeError: s is not async iterable"
FAIL Async-iterating a closed stream never executes the loop body, but works fine promise_test: Unhandled rejection with value: object "TypeError: s is not async iterable"
FAIL Async-iterating an empty but not closed/errored stream never executes the loop body and stalls the async function promise_test: Unhandled rejection with value: object "TypeError: s is not async iterable"
FAIL Async-iterating a partially consumed stream promise_test: Unhandled rejection with value: object "TypeError: s is not async iterable"
FAIL Cancellation behavior when throwing inside loop body; preventCancel = false assert_array_equals: cancel() should be called lengths differ, expected 3 got 0
FAIL Cancellation behavior when throwing inside loop body; preventCancel = true assert_array_equals: cancel() should not be called lengths differ, expected 1 got 0
FAIL Cancellation behavior when breaking inside loop body; preventCancel = false assert_array_equals: cancel() should be called lengths differ, expected 3 got 0
FAIL Cancellation behavior when breaking inside loop body; preventCancel = true assert_array_equals: cancel() should not be called lengths differ, expected 1 got 0
FAIL Cancellation behavior when returning inside loop body; preventCancel = false assert_array_equals: cancel() should be called lengths differ, expected 3 got 0
FAIL Cancellation behavior when returning inside loop body; preventCancel = true assert_array_equals: cancel() should not be called lengths differ, expected 1 got 0
FAIL Cancellation behavior when manually calling return(); preventCancel = false promise_test: Unhandled rejection with value: object "TypeError: s.getIterator is not a function"
FAIL Cancellation behavior when manually calling return(); preventCancel = true promise_test: Unhandled rejection with value: object "TypeError: s.getIterator is not a function"
FAIL Calling return() twice rejects promise_test: Unhandled rejection with value: object "TypeError: s[Symbol.asyncIterator] is not a function"
FAIL next()'s fulfillment value has the right shape promise_test: Unhandled rejection with value: object "TypeError: s[Symbol.asyncIterator] is not a function"
FAIL calling return() while there are pending reads rejects promise_test: Unhandled rejection with value: object "TypeError: s[Symbol.asyncIterator] is not a function"
FAIL getIterator() throws if there's already a lock s.getIterator is not a function
FAIL Acquiring a reader after exhaustively async-iterating a stream promise_test: Unhandled rejection with value: object "TypeError: s is not async iterable"
FAIL Acquiring a reader after partially async-iterating a stream promise_test: Unhandled rejection with value: object "TypeError: s is not async iterable"
FAIL Acquiring a reader and reading the remaining chunks after partially async-iterating a stream with preventCancel = true promise_test: Unhandled rejection with value: object "TypeError: s.getIterator(...) is not a function or its return value is not async iterable"
FAIL calling next() after return() should reject promise_test: Unhandled rejection with value: object "TypeError: rs.getIterator is not a function"
FAIL return() should unlock the stream synchronously when preventCancel = false rs.getIterator is not a function
FAIL return() should unlock the stream synchronously when preventCancel = true rs.getIterator is not a function
Harness: the test ran to completion.

