Skip to content

Commit

Permalink
webstream: throw TypeError when criteria fulfilled in getIterator
Browse files Browse the repository at this point in the history
  • Loading branch information
jakecastelli committed Jul 12, 2024
1 parent bcdbf88 commit 7150abf
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions lib/internal/webstreams/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const {

const {
codes: {
ERR_ARG_NOT_ITERABLE,
ERR_INVALID_ARG_VALUE,
ERR_INVALID_STATE,
ERR_OPERATION_FAILED,
Expand Down Expand Up @@ -235,6 +236,11 @@ function getIterator(obj, kind = 'sync', method) {
method = obj[SymbolAsyncIterator];
if (method === undefined) {
const syncMethod = obj[SymbolIterator];

if (syncMethod === undefined) {
throw new ERR_ARG_NOT_ITERABLE(obj);
}

const syncIteratorRecord = getIterator(obj, 'sync', syncMethod);
return createAsyncFromSyncIterator(syncIteratorRecord);
}
Expand All @@ -243,6 +249,10 @@ function getIterator(obj, kind = 'sync', method) {
}
}

if (method === undefined) {
throw new ERR_ARG_NOT_ITERABLE(obj);
}

const iterator = FunctionPrototypeCall(method, obj);
if (typeof iterator !== 'object' || iterator === null) {
throw new ERR_INVALID_STATE.TypeError('The iterator method must return an object');
Expand Down

0 comments on commit 7150abf

Please sign in to comment.