@@ -13,7 +13,6 @@ import {
13
13
GraphQLList ,
14
14
GraphQLObjectType ,
15
15
GraphQLOutputType ,
16
- GraphQLResolveInfo ,
17
16
GraphQLSchema ,
18
17
GraphQLTypeResolver ,
19
18
isAbstractType ,
@@ -38,6 +37,7 @@ import {
38
37
fakePromise ,
39
38
getArgumentValues ,
40
39
getDefinedRootType ,
40
+ GraphQLResolveInfo ,
41
41
GraphQLStreamDirective ,
42
42
inspect ,
43
43
isAsyncIterable ,
@@ -758,6 +758,7 @@ export function buildResolveInfo(
758
758
rootValue : exeContext . rootValue ,
759
759
operation : exeContext . operation ,
760
760
variableValues : exeContext . variableValues ,
761
+ signal : exeContext . signal ,
761
762
} ;
762
763
}
763
764
@@ -957,9 +958,13 @@ async function completeAsyncIteratorValue(
957
958
iterator : AsyncIterator < unknown > ,
958
959
asyncPayloadRecord ?: AsyncPayloadRecord ,
959
960
) : Promise < ReadonlyArray < unknown > > {
960
- exeContext . signal ?. addEventListener ( 'abort' , ( ) => {
961
- iterator . return ?.( ) ;
962
- } ) ;
961
+ exeContext . signal ?. addEventListener (
962
+ 'abort' ,
963
+ ( ) => {
964
+ iterator . return ?.( ) ;
965
+ } ,
966
+ { once : true } ,
967
+ ) ;
963
968
const errors = asyncPayloadRecord ?. errors ?? exeContext . errors ;
964
969
const stream = getStreamValues ( exeContext , fieldNodes , path ) ;
965
970
let containsPromise = false ;
@@ -2080,10 +2085,14 @@ function yieldSubsequentPayloads(
2080
2085
let isDone = false ;
2081
2086
2082
2087
const abortPromise = new Promise < void > ( ( _ , reject ) => {
2083
- exeContext . signal ?. addEventListener ( 'abort' , ( ) => {
2084
- isDone = true ;
2085
- reject ( exeContext . signal ?. reason ) ;
2086
- } ) ;
2088
+ exeContext . signal ?. addEventListener (
2089
+ 'abort' ,
2090
+ ( ) => {
2091
+ isDone = true ;
2092
+ reject ( exeContext . signal ?. reason ) ;
2093
+ } ,
2094
+ { once : true } ,
2095
+ ) ;
2087
2096
} ) ;
2088
2097
2089
2098
async function next ( ) : Promise < IteratorResult < SubsequentIncrementalExecutionResult , void > > {
@@ -2141,7 +2150,7 @@ function yieldSubsequentPayloads(
2141
2150
async throw ( error ?: unknown ) : Promise < IteratorResult < never , void > > {
2142
2151
await returnStreamIterators ( ) ;
2143
2152
isDone = true ;
2144
- return Promise . reject ( error ) ;
2153
+ throw error ;
2145
2154
} ,
2146
2155
async [ DisposableSymbols . asyncDispose ] ( ) {
2147
2156
await returnStreamIterators ( ) ;
0 commit comments