diff options
author | Gus Caplan <me@gus.host> | 2018-09-23 15:10:12 -0500 |
---|---|---|
committer | Gus Caplan <me@gus.host> | 2018-10-08 22:17:29 -0500 |
commit | 8bce9e8f190ad2e10eb31bdceeaab4158d5ee8b4 (patch) | |
tree | 5803076ffdfa8e8dc713e69e21e6003107fef229 /test/parallel/test-stream-readable-async-iterators.js | |
parent | e688fe6b7e60d3dd50f0aa922a1ab74d85cb39b5 (diff) | |
download | android-node-v8-8bce9e8f190ad2e10eb31bdceeaab4158d5ee8b4.tar.gz android-node-v8-8bce9e8f190ad2e10eb31bdceeaab4158d5ee8b4.tar.bz2 android-node-v8-8bce9e8f190ad2e10eb31bdceeaab4158d5ee8b4.zip |
streams: refactor ReadableStream asyncIterator creation and a few fixes
Closes: https://github.com/nodejs/node/issues/23041
- Rewrite `ReadableAsyncIterator` class into
`ReadableStreamAsyncIteratorPrototype` which contains no constructor and
inherits from `%AsyncIteratorPrototype%`.
- Rewrite `AsyncIteratorRecord` into dumb function.
PR-URL: https://github.com/nodejs/node/pull/23042
Fixes: https://github.com/nodejs/node/issues/23041
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'test/parallel/test-stream-readable-async-iterators.js')
-rw-r--r-- | test/parallel/test-stream-readable-async-iterators.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/parallel/test-stream-readable-async-iterators.js b/test/parallel/test-stream-readable-async-iterators.js index d8eb83a585..fb3c55846c 100644 --- a/test/parallel/test-stream-readable-async-iterators.js +++ b/test/parallel/test-stream-readable-async-iterators.js @@ -5,6 +5,28 @@ const { Readable } = require('stream'); const assert = require('assert'); async function tests() { + { + const AsyncIteratorPrototype = Object.getPrototypeOf( + Object.getPrototypeOf(async function* () {}).prototype); + const rs = new Readable({}); + assert.strictEqual( + Object.getPrototypeOf(Object.getPrototypeOf(rs[Symbol.asyncIterator]())), + AsyncIteratorPrototype); + } + + await (async function() { + const readable = new Readable({ objectMode: true, read() {} }); + readable.push(0); + readable.push(1); + readable.push(null); + + const iter = readable[Symbol.asyncIterator](); + assert.strictEqual((await iter.next()).value, 0); + for await (const d of iter) { + assert.strictEqual(d, 1); + } + })(); + await (async function() { console.log('read without for..await'); const max = 5; |