diff options
author | Milly <milly.ca@gmail.com> | 2024-05-23 20:55:07 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-23 13:55:07 +0200 |
commit | fa273509771c01d603d403002481bc1d01e4dd8b (patch) | |
tree | 578f03b94f5ddbd93b826a4d4a43cb8b5e19d541 /cli/tools/task.rs | |
parent | de5b47b13c457800828d2f3720706c44932ad772 (diff) |
fix(ext/web): `ReadableStream.from()` ignores null `Symbol.asyncIterator` (#23910)
If `@@asyncIterator` is `null` or `undefined`, it should ignores and
fallback to `@@iterator`.
Tests have been merged into WPT.
https://github.com/web-platform-tests/wpt/pull/46374
The proposal of `ReadableStream.from` uses TC39 [GetIterator][] and
[GetMethod][] within it.
GetMethod treats null as undefined.
So if `@@asyncIterator` is `null` it should be ignored and fallback to
`@@iterator`.
[GetIterator]: https://tc39.es/ecma262/#sec-getiterator
[GetMethod]: https://tc39.es/ecma262/#sec-getmethod
```bash
> deno eval "ReadableStream.from({ [Symbol.asyncIterator]: null, [Symbol.iterator]: () => ({ next: () => ({ done: true }) }) }).pipeTo(new WritableStream())"
error: Uncaught (in promise) TypeError: obj[SymbolAsyncIterator] is not a function
ReadableStream.from({ [Symbol.asyncIterator]: null, [Symbol.iterator]: () => ({ next: () => ({ done: true }) }) }).pipeTo(new WritableStream())
^
at getIterator (ext:deno_web/06_streams.js:5105:38)
at Function.from (ext:deno_web/06_streams.js:5207:22)
at file:///D:/work/js/deno/tests/wpt/suite/$deno$eval:1:16
```
---------
Co-authored-by: Asher Gomez <ashersaupingomez@gmail.com>
Diffstat (limited to 'cli/tools/task.rs')
0 files changed, 0 insertions, 0 deletions