Skip to content

Commit aca2ba1

Browse files
committed
isolate async iterator next rejection within try block
to improve readability
1 parent 1fb60f2 commit aca2ba1

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
@@ -1064,15 +1064,16 @@ async function completeAsyncIteratorValue(
10641064
try {
10651065
// eslint-disable-next-line no-await-in-loop
10661066
iteration = await iterator.next();
1067-
if (iteration.done) {
1068-
break;
1069-
}
10701067
} catch (rawError) {
10711068
const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));
10721069
completedResults.push(handleFieldError(error, itemType, errors));
10731070
break;
10741071
}
10751072

1073+
if (iteration.done) {
1074+
break;
1075+
}
1076+
10761077
if (
10771078
completeListItemValue(
10781079
iteration.value,
@@ -1952,20 +1953,23 @@ async function executeStreamIteratorItem(
19521953
asyncPayloadRecord: StreamRecord,
19531954
itemPath: Path,
19541955
): Promise<IteratorResult<unknown>> {
1955-
let item;
1956+
let iteration;
19561957
try {
1957-
const { value, done } = await iterator.next();
1958-
if (done) {
1959-
asyncPayloadRecord.setIsCompletedIterator();
1960-
return { done, value: undefined };
1961-
}
1962-
item = value;
1958+
iteration = await iterator.next();
19631959
} catch (rawError) {
19641960
const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));
19651961
const value = handleFieldError(error, itemType, asyncPayloadRecord.errors);
19661962
// don't continue if iterator throws
19671963
return { done: true, value };
19681964
}
1965+
1966+
const { done, value } = iteration;
1967+
1968+
if (done) {
1969+
asyncPayloadRecord.setIsCompletedIterator();
1970+
return { done, value: undefined };
1971+
}
1972+
19691973
return {
19701974
done: false,
19711975
value: completeValueCatchingErrors(
@@ -1974,7 +1978,7 @@ async function executeStreamIteratorItem(
19741978
fieldNodes,
19751979
info,
19761980
itemPath,
1977-
item,
1981+
value,
19781982
asyncPayloadRecord,
19791983
),
19801984
};

0 commit comments

Comments
 (0)