| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 01dfe59 commit 24a0781
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1365,6 +1365,9 @@ function readableStreamFromIterable(iterable) { | |||
| 1365 | 1365 | throw new ERR_ARG_NOT_ITERABLE(iterable); | |
| 1366 | 1366 | } | |
| 1367 | 1367 | const iterator = FunctionPrototypeCall(iteratorGetter, iterable); | |
| 1368 | + if (iterator === null || (typeof iterator !== 'object' && typeof iterator !== 'function')) { | ||
| 1369 | + throw new ERR_INVALID_STATE.TypeError('The iterator method must return an object'); | ||
| 1370 | + } | ||
| 1368 | 1371 | const startAlgorithm = nonOpStart; | |
| 1369 | 1372 | ||
| 1370 | 1373 | async function pullAlgorithm() { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -7,3 +7,22 @@ assert.throws( | |||
| 7 | 7 | () => ReadableStream.from({}), | |
| 8 | 8 | { code: 'ERR_ARG_NOT_ITERABLE', name: 'TypeError' }, | |
| 9 | 9 | ); | |
| 10 | + | ||
| 11 | + const invalidIterators = [ | ||
| 12 | + { [Symbol.iterator]: () => 42 }, | ||
| 13 | + { [Symbol.asyncIterator]: () => 42 }, | ||
| 14 | + ]; | ||
| 15 | + | ||
| 16 | + for (const iterable of invalidIterators) { | ||
| 17 | + assert.throws( | ||
| 18 | + () => ReadableStream.from(iterable), | ||
| 19 | + { code: 'ERR_INVALID_STATE', name: 'TypeError' }, | ||
| 20 | + ); | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | + function functionIterator() {} | ||
| 24 | + | ||
| 25 | + // doesNotThrow | ||
| 26 | + ReadableStream.from({ | ||
| 27 | + [Symbol.iterator]: () => functionIterator, | ||
| 28 | + }); | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments