@@ -354,7 +354,9 @@ function executeImpl(
354
354
...initialResult ,
355
355
hasNext : true ,
356
356
} ,
357
- subsequentResults : yieldSubsequentPayloads ( exeContext ) ,
357
+ subsequentResults : yieldSubsequentPayloads (
358
+ exeContext . subsequentPayloads ,
359
+ ) ,
358
360
} ;
359
361
}
360
362
return initialResult ;
@@ -372,7 +374,9 @@ function executeImpl(
372
374
...initialResult ,
373
375
hasNext : true ,
374
376
} ,
375
- subsequentResults : yieldSubsequentPayloads ( exeContext ) ,
377
+ subsequentResults : yieldSubsequentPayloads (
378
+ exeContext . subsequentPayloads ,
379
+ ) ,
376
380
} ;
377
381
}
378
382
return initialResult ;
@@ -774,7 +778,11 @@ function handleRawError(
774
778
) : null {
775
779
const errors = asyncPayloadRecord ?. errors ?? exeContext . errors ;
776
780
addError ( rawError , fieldNodes , returnType , path , errors ) ;
777
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
781
+ filterSubsequentPayloads (
782
+ exeContext . subsequentPayloads ,
783
+ path ,
784
+ asyncPayloadRecord ,
785
+ ) ;
778
786
return null ;
779
787
}
780
788
@@ -993,7 +1001,11 @@ function completeValueCatchingErrors(
993
1001
path ,
994
1002
errors ,
995
1003
) ;
996
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1004
+ filterSubsequentPayloads (
1005
+ exeContext . subsequentPayloads ,
1006
+ path ,
1007
+ asyncPayloadRecord ,
1008
+ ) ;
997
1009
return handledError ;
998
1010
} ) ;
999
1011
}
@@ -1949,7 +1961,11 @@ function executeStreamField(
1949
1961
( value ) => [ value ] ,
1950
1962
( error ) => {
1951
1963
asyncPayloadRecord . errors . push ( error ) ;
1952
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1964
+ filterSubsequentPayloads (
1965
+ exeContext . subsequentPayloads ,
1966
+ path ,
1967
+ asyncPayloadRecord ,
1968
+ ) ;
1953
1969
return null ;
1954
1970
} ,
1955
1971
) ;
@@ -1967,7 +1983,11 @@ function executeStreamField(
1967
1983
) ;
1968
1984
} catch ( error ) {
1969
1985
asyncPayloadRecord . errors . push ( error ) ;
1970
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1986
+ filterSubsequentPayloads (
1987
+ exeContext . subsequentPayloads ,
1988
+ path ,
1989
+ asyncPayloadRecord ,
1990
+ ) ;
1971
1991
asyncPayloadRecord . addItems ( null ) ;
1972
1992
return asyncPayloadRecord ;
1973
1993
}
@@ -2061,7 +2081,11 @@ async function executeStreamIterator(
2061
2081
) ;
2062
2082
} catch ( error ) {
2063
2083
asyncPayloadRecord . errors . push ( error ) ;
2064
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
2084
+ filterSubsequentPayloads (
2085
+ exeContext . subsequentPayloads ,
2086
+ path ,
2087
+ asyncPayloadRecord ,
2088
+ ) ;
2065
2089
asyncPayloadRecord . addItems ( null ) ;
2066
2090
// entire stream has errored and bubbled upwards
2067
2091
if ( iterator ?. return ) {
@@ -2080,7 +2104,11 @@ async function executeStreamIterator(
2080
2104
( value ) => [ value ] ,
2081
2105
( error ) => {
2082
2106
asyncPayloadRecord . errors . push ( error ) ;
2083
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
2107
+ filterSubsequentPayloads (
2108
+ exeContext . subsequentPayloads ,
2109
+ path ,
2110
+ asyncPayloadRecord ,
2111
+ ) ;
2084
2112
return null ;
2085
2113
} ,
2086
2114
) ;
@@ -2099,12 +2127,12 @@ async function executeStreamIterator(
2099
2127
}
2100
2128
2101
2129
function filterSubsequentPayloads (
2102
- exeContext : ExecutionContext ,
2130
+ subsequentPayloads : Set < AsyncPayloadRecord > ,
2103
2131
nullPath : Path ,
2104
2132
currentAsyncRecord : AsyncPayloadRecord | undefined ,
2105
2133
) : void {
2106
2134
const nullPathArray = pathToArray ( nullPath ) ;
2107
- exeContext . subsequentPayloads . forEach ( ( asyncRecord ) => {
2135
+ subsequentPayloads . forEach ( ( asyncRecord ) => {
2108
2136
if ( asyncRecord === currentAsyncRecord ) {
2109
2137
// don't remove payload from where error originates
2110
2138
return ;
@@ -2121,20 +2149,20 @@ function filterSubsequentPayloads(
2121
2149
// ignore error
2122
2150
} ) ;
2123
2151
}
2124
- exeContext . subsequentPayloads . delete ( asyncRecord ) ;
2152
+ subsequentPayloads . delete ( asyncRecord ) ;
2125
2153
} ) ;
2126
2154
}
2127
2155
2128
2156
function getCompletedIncrementalResults (
2129
- exeContext : ExecutionContext ,
2157
+ subsequentPayloads : Set < AsyncPayloadRecord > ,
2130
2158
) : Array < IncrementalResult > {
2131
2159
const incrementalResults : Array < IncrementalResult > = [ ] ;
2132
- for ( const asyncPayloadRecord of exeContext . subsequentPayloads ) {
2160
+ for ( const asyncPayloadRecord of subsequentPayloads ) {
2133
2161
const incrementalResult : IncrementalResult = { } ;
2134
2162
if ( ! asyncPayloadRecord . isCompleted ) {
2135
2163
continue ;
2136
2164
}
2137
- exeContext . subsequentPayloads . delete ( asyncPayloadRecord ) ;
2165
+ subsequentPayloads . delete ( asyncPayloadRecord ) ;
2138
2166
if ( isStreamPayload ( asyncPayloadRecord ) ) {
2139
2167
const items = asyncPayloadRecord . items ;
2140
2168
if ( asyncPayloadRecord . isCompletedIterator ) {
@@ -2160,7 +2188,7 @@ function getCompletedIncrementalResults(
2160
2188
}
2161
2189
2162
2190
function yieldSubsequentPayloads (
2163
- exeContext : ExecutionContext ,
2191
+ subsequentPayloads : Set < AsyncPayloadRecord > ,
2164
2192
) : AsyncGenerator < SubsequentIncrementalExecutionResult , void , void > {
2165
2193
let isDone = false ;
2166
2194
@@ -2171,17 +2199,15 @@ function yieldSubsequentPayloads(
2171
2199
return { value : undefined , done : true } ;
2172
2200
}
2173
2201
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 ) ) ;
2177
2203
2178
2204
if ( isDone ) {
2179
2205
// a different call to next has exhausted all payloads
2180
2206
return { value : undefined , done : true } ;
2181
2207
}
2182
2208
2183
- const incremental = getCompletedIncrementalResults ( exeContext ) ;
2184
- const hasNext = exeContext . subsequentPayloads . size > 0 ;
2209
+ const incremental = getCompletedIncrementalResults ( subsequentPayloads ) ;
2210
+ const hasNext = subsequentPayloads . size > 0 ;
2185
2211
2186
2212
if ( ! incremental . length && hasNext ) {
2187
2213
return next ( ) ;
@@ -2199,7 +2225,7 @@ function yieldSubsequentPayloads(
2199
2225
2200
2226
function returnStreamIterators ( ) {
2201
2227
const promises : Array < Promise < IteratorResult < unknown > > > = [ ] ;
2202
- exeContext . subsequentPayloads . forEach ( ( asyncPayloadRecord ) => {
2228
+ subsequentPayloads . forEach ( ( asyncPayloadRecord ) => {
2203
2229
if (
2204
2230
isStreamPayload ( asyncPayloadRecord ) &&
2205
2231
asyncPayloadRecord . iterator ?. return
0 commit comments