@@ -354,7 +354,9 @@ function executeImpl(
354354 ...initialResult ,
355355 hasNext : true ,
356356 } ,
357- subsequentResults : yieldSubsequentPayloads ( exeContext ) ,
357+ subsequentResults : yieldSubsequentPayloads (
358+ exeContext . subsequentPayloads ,
359+ ) ,
358360 } ;
359361 }
360362 return initialResult ;
@@ -372,7 +374,9 @@ function executeImpl(
372374 ...initialResult ,
373375 hasNext : true ,
374376 } ,
375- subsequentResults : yieldSubsequentPayloads ( exeContext ) ,
377+ subsequentResults : yieldSubsequentPayloads (
378+ exeContext . subsequentPayloads ,
379+ ) ,
376380 } ;
377381 }
378382 return initialResult ;
@@ -774,7 +778,11 @@ function handleRawError(
774778) : null {
775779 const errors = asyncPayloadRecord ?. errors ?? exeContext . errors ;
776780 addError ( rawError , fieldNodes , returnType , path , errors ) ;
777- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
781+ filterSubsequentPayloads (
782+ exeContext . subsequentPayloads ,
783+ path ,
784+ asyncPayloadRecord ,
785+ ) ;
778786 return null ;
779787}
780788
@@ -993,7 +1001,11 @@ function completeValueCatchingErrors(
9931001 path ,
9941002 errors ,
9951003 ) ;
996- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1004+ filterSubsequentPayloads (
1005+ exeContext . subsequentPayloads ,
1006+ path ,
1007+ asyncPayloadRecord ,
1008+ ) ;
9971009 return handledError ;
9981010 } ) ;
9991011 }
@@ -1949,7 +1961,11 @@ function executeStreamField(
19491961 ( value ) => [ value ] ,
19501962 ( error ) => {
19511963 asyncPayloadRecord . errors . push ( error ) ;
1952- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1964+ filterSubsequentPayloads (
1965+ exeContext . subsequentPayloads ,
1966+ path ,
1967+ asyncPayloadRecord ,
1968+ ) ;
19531969 return null ;
19541970 } ,
19551971 ) ;
@@ -1967,7 +1983,11 @@ function executeStreamField(
19671983 ) ;
19681984 } catch ( error ) {
19691985 asyncPayloadRecord . errors . push ( error ) ;
1970- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1986+ filterSubsequentPayloads (
1987+ exeContext . subsequentPayloads ,
1988+ path ,
1989+ asyncPayloadRecord ,
1990+ ) ;
19711991 asyncPayloadRecord . addItems ( null ) ;
19721992 return asyncPayloadRecord ;
19731993 }
@@ -2061,7 +2081,11 @@ async function executeStreamIterator(
20612081 ) ;
20622082 } catch ( error ) {
20632083 asyncPayloadRecord . errors . push ( error ) ;
2064- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
2084+ filterSubsequentPayloads (
2085+ exeContext . subsequentPayloads ,
2086+ path ,
2087+ asyncPayloadRecord ,
2088+ ) ;
20652089 asyncPayloadRecord . addItems ( null ) ;
20662090 // entire stream has errored and bubbled upwards
20672091 if ( iterator ?. return ) {
@@ -2080,7 +2104,11 @@ async function executeStreamIterator(
20802104 ( value ) => [ value ] ,
20812105 ( error ) => {
20822106 asyncPayloadRecord . errors . push ( error ) ;
2083- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
2107+ filterSubsequentPayloads (
2108+ exeContext . subsequentPayloads ,
2109+ path ,
2110+ asyncPayloadRecord ,
2111+ ) ;
20842112 return null ;
20852113 } ,
20862114 ) ;
@@ -2099,12 +2127,12 @@ async function executeStreamIterator(
20992127}
21002128
21012129function filterSubsequentPayloads (
2102- exeContext : ExecutionContext ,
2130+ subsequentPayloads : Set < AsyncPayloadRecord > ,
21032131 nullPath : Path ,
21042132 currentAsyncRecord : AsyncPayloadRecord | undefined ,
21052133) : void {
21062134 const nullPathArray = pathToArray ( nullPath ) ;
2107- exeContext . subsequentPayloads . forEach ( ( asyncRecord ) => {
2135+ subsequentPayloads . forEach ( ( asyncRecord ) => {
21082136 if ( asyncRecord === currentAsyncRecord ) {
21092137 // don't remove payload from where error originates
21102138 return ;
@@ -2121,20 +2149,20 @@ function filterSubsequentPayloads(
21212149 // ignore error
21222150 } ) ;
21232151 }
2124- exeContext . subsequentPayloads . delete ( asyncRecord ) ;
2152+ subsequentPayloads . delete ( asyncRecord ) ;
21252153 } ) ;
21262154}
21272155
21282156function getCompletedIncrementalResults (
2129- exeContext : ExecutionContext ,
2157+ subsequentPayloads : Set < AsyncPayloadRecord > ,
21302158) : Array < IncrementalResult > {
21312159 const incrementalResults : Array < IncrementalResult > = [ ] ;
2132- for ( const asyncPayloadRecord of exeContext . subsequentPayloads ) {
2160+ for ( const asyncPayloadRecord of subsequentPayloads ) {
21332161 const incrementalResult : IncrementalResult = { } ;
21342162 if ( ! asyncPayloadRecord . isCompleted ) {
21352163 continue ;
21362164 }
2137- exeContext . subsequentPayloads . delete ( asyncPayloadRecord ) ;
2165+ subsequentPayloads . delete ( asyncPayloadRecord ) ;
21382166 if ( isStreamPayload ( asyncPayloadRecord ) ) {
21392167 const items = asyncPayloadRecord . items ;
21402168 if ( asyncPayloadRecord . isCompletedIterator ) {
@@ -2160,7 +2188,7 @@ function getCompletedIncrementalResults(
21602188}
21612189
21622190function yieldSubsequentPayloads (
2163- exeContext : ExecutionContext ,
2191+ subsequentPayloads : Set < AsyncPayloadRecord > ,
21642192) : AsyncGenerator < SubsequentIncrementalExecutionResult , void , void > {
21652193 let isDone = false ;
21662194
@@ -2171,17 +2199,15 @@ function yieldSubsequentPayloads(
21712199 return { value : undefined , done : true } ;
21722200 }
21732201
2174- await Promise . race (
2175- Array . from ( exeContext . subsequentPayloads ) . map ( ( p ) => p . promise ) ,
2176- ) ;
2202+ await Promise . race ( Array . from ( subsequentPayloads ) . map ( ( p ) => p . promise ) ) ;
21772203
21782204 if ( isDone ) {
21792205 // a different call to next has exhausted all payloads
21802206 return { value : undefined , done : true } ;
21812207 }
21822208
2183- const incremental = getCompletedIncrementalResults ( exeContext ) ;
2184- const hasNext = exeContext . subsequentPayloads . size > 0 ;
2209+ const incremental = getCompletedIncrementalResults ( subsequentPayloads ) ;
2210+ const hasNext = subsequentPayloads . size > 0 ;
21852211
21862212 if ( ! incremental . length && hasNext ) {
21872213 return next ( ) ;
@@ -2199,7 +2225,7 @@ function yieldSubsequentPayloads(
21992225
22002226 function returnStreamIterators ( ) {
22012227 const promises : Array < Promise < IteratorResult < unknown > > > = [ ] ;
2202- exeContext . subsequentPayloads . forEach ( ( asyncPayloadRecord ) => {
2228+ subsequentPayloads . forEach ( ( asyncPayloadRecord ) => {
22032229 if (
22042230 isStreamPayload ( asyncPayloadRecord ) &&
22052231 asyncPayloadRecord . iterator ?. return
0 commit comments