Skip to content

Commit c3dd54f

Browse files
committed
isolate async iterator next rejection within try block
to improve readability
1 parent 526d563 commit c3dd54f

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

src/execution/execute.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,15 +1068,16 @@ async function completeAsyncIteratorValue(
10681068
try {
10691069
// eslint-disable-next-line no-await-in-loop
10701070
iteration = await iterator.next();
1071-
if (iteration.done) {
1072-
break;
1073-
}
10741071
} catch (rawError) {
10751072
const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));
10761073
completedResults.push(handleFieldError(error, itemType, errors));
10771074
break;
10781075
}
10791076

1077+
if (iteration.done) {
1078+
break;
1079+
}
1080+
10801081
if (
10811082
completeListItemValue(
10821083
iteration.value,
@@ -2011,20 +2012,23 @@ async function executeStreamAsyncIteratorItem(
20112012
asyncPayloadRecord: StreamItemRecord,
20122013
itemPath: Path,
20132014
): Promise<IteratorResult<unknown>> {
2014-
let item;
2015+
let iteration;
20152016
try {
2016-
const { value, done } = await iterator.next();
2017-
if (done) {
2018-
asyncPayloadRecord.setIsCompletedIterator();
2019-
return { done, value: undefined };
2020-
}
2021-
item = value;
2017+
iteration = await iterator.next();
20222018
} catch (rawError) {
20232019
const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));
20242020
const value = handleFieldError(error, itemType, asyncPayloadRecord.errors);
20252021
// don't continue if iterator throws
20262022
return { done: true, value };
20272023
}
2024+
2025+
const { done, value } = iteration;
2026+
2027+
if (done) {
2028+
asyncPayloadRecord.setIsCompletedIterator();
2029+
return { done, value: undefined };
2030+
}
2031+
20282032
return {
20292033
done: false,
20302034
value: completeValueCatchingErrors(
@@ -2033,7 +2037,7 @@ async function executeStreamAsyncIteratorItem(
20332037
fieldNodes,
20342038
info,
20352039
itemPath,
2036-
item,
2040+
value,
20372041
asyncPayloadRecord,
20382042
),
20392043
};

0 commit comments

Comments
 (0)