@@ -363,7 +363,9 @@ function executeImpl(
363363 ...initialResult ,
364364 hasNext : true ,
365365 } ,
366- subsequentResults : yieldSubsequentPayloads ( exeContext ) ,
366+ subsequentResults : yieldSubsequentPayloads (
367+ exeContext . subsequentPayloads ,
368+ ) ,
367369 } ;
368370 }
369371 return initialResult ;
@@ -381,7 +383,9 @@ function executeImpl(
381383 ...initialResult ,
382384 hasNext : true ,
383385 } ,
384- subsequentResults : yieldSubsequentPayloads ( exeContext ) ,
386+ subsequentResults : yieldSubsequentPayloads (
387+ exeContext . subsequentPayloads ,
388+ ) ,
385389 } ;
386390 }
387391 return initialResult ;
@@ -810,7 +814,11 @@ function handleRawError(
810814) : void {
811815 const errors = asyncPayloadRecord ?. errors ?? exeContext . errors ;
812816 addError ( rawError , fieldNodes , returnType , path , errors ) ;
813- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
817+ filterSubsequentPayloads (
818+ exeContext . subsequentPayloads ,
819+ path ,
820+ asyncPayloadRecord ,
821+ ) ;
814822}
815823
816824function addError (
@@ -1867,7 +1875,11 @@ function executeStreamField(
18671875 ( value ) => [ value ] ,
18681876 ( error ) => {
18691877 asyncPayloadRecord . errors . push ( error ) ;
1870- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1878+ filterSubsequentPayloads (
1879+ exeContext . subsequentPayloads ,
1880+ path ,
1881+ asyncPayloadRecord ,
1882+ ) ;
18711883 return null ;
18721884 } ,
18731885 ) ;
@@ -1901,7 +1913,11 @@ function executeStreamField(
19011913 }
19021914 } catch ( error ) {
19031915 asyncPayloadRecord . errors . push ( error ) ;
1904- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1916+ filterSubsequentPayloads (
1917+ exeContext . subsequentPayloads ,
1918+ path ,
1919+ asyncPayloadRecord ,
1920+ ) ;
19051921 asyncPayloadRecord . addItems ( null ) ;
19061922 return asyncPayloadRecord ;
19071923 }
@@ -1923,7 +1939,11 @@ function executeStreamField(
19231939 ( value ) => [ value ] ,
19241940 ( error ) => {
19251941 asyncPayloadRecord . errors . push ( error ) ;
1926- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1942+ filterSubsequentPayloads (
1943+ exeContext . subsequentPayloads ,
1944+ path ,
1945+ asyncPayloadRecord ,
1946+ ) ;
19271947 return null ;
19281948 } ,
19291949 ) ;
@@ -2044,7 +2064,11 @@ async function executeStreamIterator(
20442064 ) ;
20452065 } catch ( error ) {
20462066 asyncPayloadRecord . errors . push ( error ) ;
2047- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
2067+ filterSubsequentPayloads (
2068+ exeContext . subsequentPayloads ,
2069+ path ,
2070+ asyncPayloadRecord ,
2071+ ) ;
20482072 asyncPayloadRecord . addItems ( null ) ;
20492073 // entire stream has errored and bubbled upwards
20502074 if ( iterator ?. return ) {
@@ -2063,7 +2087,11 @@ async function executeStreamIterator(
20632087 ( value ) => [ value ] ,
20642088 ( error ) => {
20652089 asyncPayloadRecord . errors . push ( error ) ;
2066- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
2090+ filterSubsequentPayloads (
2091+ exeContext . subsequentPayloads ,
2092+ path ,
2093+ asyncPayloadRecord ,
2094+ ) ;
20672095 return null ;
20682096 } ,
20692097 ) ;
@@ -2082,12 +2110,12 @@ async function executeStreamIterator(
20822110}
20832111
20842112function filterSubsequentPayloads (
2085- exeContext : ExecutionContext ,
2113+ subsequentPayloads : Set < AsyncPayloadRecord > ,
20862114 nullPath : Path ,
20872115 currentAsyncRecord : AsyncPayloadRecord | undefined ,
20882116) : void {
20892117 const nullPathArray = pathToArray ( nullPath ) ;
2090- exeContext . subsequentPayloads . forEach ( ( asyncRecord ) => {
2118+ subsequentPayloads . forEach ( ( asyncRecord ) => {
20912119 if ( asyncRecord === currentAsyncRecord ) {
20922120 // don't remove payload from where error originates
20932121 return ;
@@ -2104,20 +2132,20 @@ function filterSubsequentPayloads(
21042132 // ignore error
21052133 } ) ;
21062134 }
2107- exeContext . subsequentPayloads . delete ( asyncRecord ) ;
2135+ subsequentPayloads . delete ( asyncRecord ) ;
21082136 } ) ;
21092137}
21102138
21112139function getCompletedIncrementalResults (
2112- exeContext : ExecutionContext ,
2140+ subsequentPayloads : Set < AsyncPayloadRecord > ,
21132141) : Array < IncrementalResult > {
21142142 const incrementalResults : Array < IncrementalResult > = [ ] ;
2115- for ( const asyncPayloadRecord of exeContext . subsequentPayloads ) {
2143+ for ( const asyncPayloadRecord of subsequentPayloads ) {
21162144 const incrementalResult : IncrementalResult = { } ;
21172145 if ( ! asyncPayloadRecord . isCompleted ) {
21182146 continue ;
21192147 }
2120- exeContext . subsequentPayloads . delete ( asyncPayloadRecord ) ;
2148+ subsequentPayloads . delete ( asyncPayloadRecord ) ;
21212149 if ( isStreamPayload ( asyncPayloadRecord ) ) {
21222150 const items = asyncPayloadRecord . items ;
21232151 if ( asyncPayloadRecord . isCompletedIterator ) {
@@ -2143,7 +2171,7 @@ function getCompletedIncrementalResults(
21432171}
21442172
21452173function yieldSubsequentPayloads (
2146- exeContext : ExecutionContext ,
2174+ subsequentPayloads : Set < AsyncPayloadRecord > ,
21472175) : AsyncGenerator < SubsequentIncrementalExecutionResult , void , void > {
21482176 let isDone = false ;
21492177
@@ -2154,17 +2182,15 @@ function yieldSubsequentPayloads(
21542182 return { value : undefined , done : true } ;
21552183 }
21562184
2157- await Promise . race (
2158- Array . from ( exeContext . subsequentPayloads ) . map ( ( p ) => p . promise ) ,
2159- ) ;
2185+ await Promise . race ( Array . from ( subsequentPayloads ) . map ( ( p ) => p . promise ) ) ;
21602186
21612187 if ( isDone ) {
21622188 // a different call to next has exhausted all payloads
21632189 return { value : undefined , done : true } ;
21642190 }
21652191
2166- const incremental = getCompletedIncrementalResults ( exeContext ) ;
2167- const hasNext = exeContext . subsequentPayloads . size > 0 ;
2192+ const incremental = getCompletedIncrementalResults ( subsequentPayloads ) ;
2193+ const hasNext = subsequentPayloads . size > 0 ;
21682194
21692195 if ( ! incremental . length && hasNext ) {
21702196 return next ( ) ;
@@ -2182,7 +2208,7 @@ function yieldSubsequentPayloads(
21822208
21832209 function returnStreamIterators ( ) {
21842210 const promises : Array < Promise < IteratorResult < unknown > > > = [ ] ;
2185- exeContext . subsequentPayloads . forEach ( ( asyncPayloadRecord ) => {
2211+ subsequentPayloads . forEach ( ( asyncPayloadRecord ) => {
21862212 if (
21872213 isStreamPayload ( asyncPayloadRecord ) &&
21882214 asyncPayloadRecord . iterator ?. return
0 commit comments