@@ -13,7 +13,6 @@ import {
1313 GraphQLList ,
1414 GraphQLObjectType ,
1515 GraphQLOutputType ,
16- GraphQLResolveInfo ,
1716 GraphQLSchema ,
1817 GraphQLTypeResolver ,
1918 isAbstractType ,
@@ -38,6 +37,7 @@ import {
3837 fakePromise ,
3938 getArgumentValues ,
4039 getDefinedRootType ,
40+ GraphQLResolveInfo ,
4141 GraphQLStreamDirective ,
4242 inspect ,
4343 isAsyncIterable ,
@@ -758,6 +758,7 @@ export function buildResolveInfo(
758758 rootValue : exeContext . rootValue ,
759759 operation : exeContext . operation ,
760760 variableValues : exeContext . variableValues ,
761+ signal : exeContext . signal ,
761762 } ;
762763}
763764
@@ -957,9 +958,13 @@ async function completeAsyncIteratorValue(
957958 iterator : AsyncIterator < unknown > ,
958959 asyncPayloadRecord ?: AsyncPayloadRecord ,
959960) : 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+ ) ;
963968 const errors = asyncPayloadRecord ?. errors ?? exeContext . errors ;
964969 const stream = getStreamValues ( exeContext , fieldNodes , path ) ;
965970 let containsPromise = false ;
@@ -2080,10 +2085,14 @@ function yieldSubsequentPayloads(
20802085 let isDone = false ;
20812086
20822087 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+ ) ;
20872096 } ) ;
20882097
20892098 async function next ( ) : Promise < IteratorResult < SubsequentIncrementalExecutionResult , void > > {
@@ -2141,7 +2150,7 @@ function yieldSubsequentPayloads(
21412150 async throw ( error ?: unknown ) : Promise < IteratorResult < never , void > > {
21422151 await returnStreamIterators ( ) ;
21432152 isDone = true ;
2144- return Promise . reject ( error ) ;
2153+ throw error ;
21452154 } ,
21462155 async [ DisposableSymbols . asyncDispose ] ( ) {
21472156 await returnStreamIterators ( ) ;
0 commit comments