1
- import { abortSignalAny } from '@graphql-hive/gateway-abort-signal-any' ;
2
1
import {
3
2
defaultPrintFn ,
4
3
SerializedExecutionRequest ,
@@ -132,24 +131,6 @@ export interface HTTPExecutorOptions {
132
131
133
132
export type HeadersConfig = Record < string , string > ;
134
133
135
- // To prevent event listener warnings
136
- function createSignalWrapper ( signal : AbortSignal ) : AbortSignal {
137
- const listeners = new Set < EventListener > ( ) ;
138
- signal . onabort = ( event ) => {
139
- for ( const listener of listeners ) {
140
- listener ( event ) ;
141
- }
142
- } ;
143
- return Object . assign ( signal , {
144
- addEventListener ( _type : 'abort' , listener : EventListener ) {
145
- listeners . add ( listener ) ;
146
- } ,
147
- removeEventListener ( _type : 'abort' , listener : EventListener ) {
148
- listeners . delete ( listener ) ;
149
- } ,
150
- } ) ;
151
- }
152
-
153
134
export function buildHTTPExecutor (
154
135
options ?: Omit < HTTPExecutorOptions , 'fetch' > & {
155
136
fetch : SyncFetchFn ;
@@ -177,13 +158,12 @@ export function buildHTTPExecutor(
177
158
) : DisposableExecutor < any , HTTPExecutorOptions > {
178
159
const printFn = options ?. print ?? defaultPrintFn ;
179
160
const disposeCtrl = new AbortController ( ) ;
180
- const sharedSignal = createSignalWrapper ( disposeCtrl . signal ) ;
181
161
const baseExecutor = (
182
162
request : ExecutionRequest < any , any , any , HTTPExecutorOptions > ,
183
163
excludeQuery ?: boolean ,
184
164
) => {
185
- if ( sharedSignal . aborted ) {
186
- return createResultForAbort ( sharedSignal . reason ) ;
165
+ if ( disposeCtrl . signal . aborted ) {
166
+ return createResultForAbort ( disposeCtrl . signal . reason ) ;
187
167
}
188
168
const fetchFn = request . extensions ?. fetch ?? options ?. fetch ?? defaultFetch ;
189
169
let method = request . extensions ?. method || options ?. method ;
@@ -230,7 +210,7 @@ export function buildHTTPExecutor(
230
210
request . extensions = restExtensions ;
231
211
}
232
212
233
- const signals = [ sharedSignal ] ;
213
+ const signals = [ disposeCtrl . signal ] ;
234
214
const signalFromRequest = request . signal || request . info ?. signal ;
235
215
if ( signalFromRequest ) {
236
216
if ( signalFromRequest . aborted ) {
@@ -242,7 +222,7 @@ export function buildHTTPExecutor(
242
222
signals . push ( AbortSignal . timeout ( options . timeout ) ) ;
243
223
}
244
224
245
- const signal = abortSignalAny ( signals ) ;
225
+ const signal = AbortSignal . any ( signals ) ;
246
226
247
227
const upstreamErrorExtensions : UpstreamErrorExtensions = {
248
228
request : {
@@ -489,8 +469,8 @@ export function buildHTTPExecutor(
489
469
function retryAttempt ( ) :
490
470
| PromiseLike < ExecutionResult < any > >
491
471
| ExecutionResult < any > {
492
- if ( sharedSignal . aborted ) {
493
- return createResultForAbort ( sharedSignal . reason ) ;
472
+ if ( disposeCtrl . signal . aborted ) {
473
+ return createResultForAbort ( disposeCtrl . signal . reason ) ;
494
474
}
495
475
attempt ++ ;
496
476
if ( attempt > options ! . retry ! ) {
0 commit comments