@@ -363,7 +363,9 @@ function executeImpl(
363
363
...initialResult ,
364
364
hasNext : true ,
365
365
} ,
366
- subsequentResults : yieldSubsequentPayloads ( exeContext ) ,
366
+ subsequentResults : yieldSubsequentPayloads (
367
+ exeContext . subsequentPayloads ,
368
+ ) ,
367
369
} ;
368
370
}
369
371
return initialResult ;
@@ -381,7 +383,9 @@ function executeImpl(
381
383
...initialResult ,
382
384
hasNext : true ,
383
385
} ,
384
- subsequentResults : yieldSubsequentPayloads ( exeContext ) ,
386
+ subsequentResults : yieldSubsequentPayloads (
387
+ exeContext . subsequentPayloads ,
388
+ ) ,
385
389
} ;
386
390
}
387
391
return initialResult ;
@@ -810,7 +814,11 @@ function handleRawError(
810
814
) : void {
811
815
const errors = asyncPayloadRecord ?. errors ?? exeContext . errors ;
812
816
addError ( rawError , fieldNodes , returnType , path , errors ) ;
813
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
817
+ filterSubsequentPayloads (
818
+ exeContext . subsequentPayloads ,
819
+ path ,
820
+ asyncPayloadRecord ,
821
+ ) ;
814
822
}
815
823
816
824
function addError (
@@ -1867,7 +1875,11 @@ function executeStreamField(
1867
1875
( value ) => [ value ] ,
1868
1876
( error ) => {
1869
1877
asyncPayloadRecord . errors . push ( error ) ;
1870
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1878
+ filterSubsequentPayloads (
1879
+ exeContext . subsequentPayloads ,
1880
+ path ,
1881
+ asyncPayloadRecord ,
1882
+ ) ;
1871
1883
return null ;
1872
1884
} ,
1873
1885
) ;
@@ -1901,7 +1913,11 @@ function executeStreamField(
1901
1913
}
1902
1914
} catch ( error ) {
1903
1915
asyncPayloadRecord . errors . push ( error ) ;
1904
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1916
+ filterSubsequentPayloads (
1917
+ exeContext . subsequentPayloads ,
1918
+ path ,
1919
+ asyncPayloadRecord ,
1920
+ ) ;
1905
1921
asyncPayloadRecord . addItems ( null ) ;
1906
1922
return asyncPayloadRecord ;
1907
1923
}
@@ -1923,7 +1939,11 @@ function executeStreamField(
1923
1939
( value ) => [ value ] ,
1924
1940
( error ) => {
1925
1941
asyncPayloadRecord . errors . push ( error ) ;
1926
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
1942
+ filterSubsequentPayloads (
1943
+ exeContext . subsequentPayloads ,
1944
+ path ,
1945
+ asyncPayloadRecord ,
1946
+ ) ;
1927
1947
return null ;
1928
1948
} ,
1929
1949
) ;
@@ -2044,7 +2064,11 @@ async function executeStreamIterator(
2044
2064
) ;
2045
2065
} catch ( error ) {
2046
2066
asyncPayloadRecord . errors . push ( error ) ;
2047
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
2067
+ filterSubsequentPayloads (
2068
+ exeContext . subsequentPayloads ,
2069
+ path ,
2070
+ asyncPayloadRecord ,
2071
+ ) ;
2048
2072
asyncPayloadRecord . addItems ( null ) ;
2049
2073
// entire stream has errored and bubbled upwards
2050
2074
if ( iterator ?. return ) {
@@ -2063,7 +2087,11 @@ async function executeStreamIterator(
2063
2087
( value ) => [ value ] ,
2064
2088
( error ) => {
2065
2089
asyncPayloadRecord . errors . push ( error ) ;
2066
- filterSubsequentPayloads ( exeContext , path , asyncPayloadRecord ) ;
2090
+ filterSubsequentPayloads (
2091
+ exeContext . subsequentPayloads ,
2092
+ path ,
2093
+ asyncPayloadRecord ,
2094
+ ) ;
2067
2095
return null ;
2068
2096
} ,
2069
2097
) ;
@@ -2082,12 +2110,12 @@ async function executeStreamIterator(
2082
2110
}
2083
2111
2084
2112
function filterSubsequentPayloads (
2085
- exeContext : ExecutionContext ,
2113
+ subsequentPayloads : Set < AsyncPayloadRecord > ,
2086
2114
nullPath : Path ,
2087
2115
currentAsyncRecord : AsyncPayloadRecord | undefined ,
2088
2116
) : void {
2089
2117
const nullPathArray = pathToArray ( nullPath ) ;
2090
- exeContext . subsequentPayloads . forEach ( ( asyncRecord ) => {
2118
+ subsequentPayloads . forEach ( ( asyncRecord ) => {
2091
2119
if ( asyncRecord === currentAsyncRecord ) {
2092
2120
// don't remove payload from where error originates
2093
2121
return ;
@@ -2104,20 +2132,20 @@ function filterSubsequentPayloads(
2104
2132
// ignore error
2105
2133
} ) ;
2106
2134
}
2107
- exeContext . subsequentPayloads . delete ( asyncRecord ) ;
2135
+ subsequentPayloads . delete ( asyncRecord ) ;
2108
2136
} ) ;
2109
2137
}
2110
2138
2111
2139
function getCompletedIncrementalResults (
2112
- exeContext : ExecutionContext ,
2140
+ subsequentPayloads : Set < AsyncPayloadRecord > ,
2113
2141
) : Array < IncrementalResult > {
2114
2142
const incrementalResults : Array < IncrementalResult > = [ ] ;
2115
- for ( const asyncPayloadRecord of exeContext . subsequentPayloads ) {
2143
+ for ( const asyncPayloadRecord of subsequentPayloads ) {
2116
2144
const incrementalResult : IncrementalResult = { } ;
2117
2145
if ( ! asyncPayloadRecord . isCompleted ) {
2118
2146
continue ;
2119
2147
}
2120
- exeContext . subsequentPayloads . delete ( asyncPayloadRecord ) ;
2148
+ subsequentPayloads . delete ( asyncPayloadRecord ) ;
2121
2149
if ( isStreamPayload ( asyncPayloadRecord ) ) {
2122
2150
const items = asyncPayloadRecord . items ;
2123
2151
if ( asyncPayloadRecord . isCompletedIterator ) {
@@ -2143,7 +2171,7 @@ function getCompletedIncrementalResults(
2143
2171
}
2144
2172
2145
2173
function yieldSubsequentPayloads (
2146
- exeContext : ExecutionContext ,
2174
+ subsequentPayloads : Set < AsyncPayloadRecord > ,
2147
2175
) : AsyncGenerator < SubsequentIncrementalExecutionResult , void , void > {
2148
2176
let isDone = false ;
2149
2177
@@ -2154,17 +2182,15 @@ function yieldSubsequentPayloads(
2154
2182
return { value : undefined , done : true } ;
2155
2183
}
2156
2184
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 ) ) ;
2160
2186
2161
2187
if ( isDone ) {
2162
2188
// a different call to next has exhausted all payloads
2163
2189
return { value : undefined , done : true } ;
2164
2190
}
2165
2191
2166
- const incremental = getCompletedIncrementalResults ( exeContext ) ;
2167
- const hasNext = exeContext . subsequentPayloads . size > 0 ;
2192
+ const incremental = getCompletedIncrementalResults ( subsequentPayloads ) ;
2193
+ const hasNext = subsequentPayloads . size > 0 ;
2168
2194
2169
2195
if ( ! incremental . length && hasNext ) {
2170
2196
return next ( ) ;
@@ -2182,7 +2208,7 @@ function yieldSubsequentPayloads(
2182
2208
2183
2209
function returnStreamIterators ( ) {
2184
2210
const promises : Array < Promise < IteratorResult < unknown > > > = [ ] ;
2185
- exeContext . subsequentPayloads . forEach ( ( asyncPayloadRecord ) => {
2211
+ subsequentPayloads . forEach ( ( asyncPayloadRecord ) => {
2186
2212
if (
2187
2213
isStreamPayload ( asyncPayloadRecord ) &&
2188
2214
asyncPayloadRecord . iterator ?. return
0 commit comments