Skip to content

Commit 1aa1229

Browse files
committed
isolate async iterator next rejection within try block
to improve readability
1 parent 7a609a2 commit 1aa1229

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/execution/execute.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,15 +1056,16 @@ async function completeAsyncIteratorValue(
10561056
try {
10571057
// eslint-disable-next-line no-await-in-loop
10581058
iteration = await iterator.next();
1059-
if (iteration.done) {
1060-
break;
1061-
}
10621059
} catch (rawError) {
10631060
const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));
10641061
completedResults.push(handleFieldError(error, itemType, errors));
10651062
break;
10661063
}
10671064

1065+
if (iteration.done) {
1066+
break;
1067+
}
1068+
10681069
if (
10691070
completeListItemValue(
10701071
iteration.value,
@@ -1910,20 +1911,23 @@ async function executeStreamIteratorItem(
19101911
asyncPayloadRecord: StreamRecord,
19111912
itemPath: Path,
19121913
): Promise<IteratorResult<unknown>> {
1913-
let item;
1914+
let iteration;
19141915
try {
1915-
const { value, done } = await iterator.next();
1916-
if (done) {
1917-
asyncPayloadRecord.setIsCompletedIterator();
1918-
return { done, value: undefined };
1919-
}
1920-
item = value;
1916+
iteration = await iterator.next();
19211917
} catch (rawError) {
19221918
const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));
19231919
const value = handleFieldError(error, itemType, asyncPayloadRecord.errors);
19241920
// don't continue if iterator throws
19251921
return { done: true, value };
19261922
}
1923+
1924+
const { done, value: item } = iteration;
1925+
1926+
if (done) {
1927+
asyncPayloadRecord.setIsCompletedIterator();
1928+
return { done, value: undefined };
1929+
}
1930+
19271931
let completedItem;
19281932
try {
19291933
completedItem = completeValue(

0 commit comments

Comments
 (0)