File tree Expand file tree Collapse file tree 1 file changed +17
-1
lines changed Expand file tree Collapse file tree 1 file changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -277,7 +277,23 @@ export class FetchingFlagResolverClient implements FlagResolverClient {
277
277
if ( ! resp . ok ) {
278
278
throw new Error ( `${ resp . status } : ${ resp . statusText } ` ) ;
279
279
}
280
- return ResolveFlagsResponse . fromJSON ( await resp . json ( ) ) ;
280
+ const abortPromise = new Promise ( ( _resolve , reject ) => {
281
+ if ( signal . aborted ) {
282
+ reject ( signal . reason ) ;
283
+ return ;
284
+ }
285
+ signal . addEventListener (
286
+ 'abort' ,
287
+ ( ) => {
288
+ reject ( signal . reason ) ;
289
+ } ,
290
+ { once : true } ,
291
+ ) ;
292
+ } ) ;
293
+ // we've seen issues where Node doesn't properly reject response.json() on abort,
294
+ // so we do it ourselves
295
+ const json = await Promise . race ( [ abortPromise , resp . json ( ) ] ) ;
296
+ return ResolveFlagsResponse . fromJSON ( json ) ;
281
297
}
282
298
283
299
// async resolveFlagsProto(request: ResolveFlagsRequest): Promise<ResolveFlagsResponse> {
You can’t perform that action at this time.
0 commit comments