Skip to content
This repository was archived by the owner on Nov 18, 2025. It is now read-only.

Commit b2a8cec

Browse files
authored
perf: remove abort controller polyfill (#1802)
* perf: remove abort controller polyfill All platforms support this now, so we don't need it anymore. Replaces #1788. * chore: run fix
1 parent 3b341da commit b2a8cec

File tree

5 files changed

+21
-50
lines changed

5 files changed

+21
-50
lines changed

gax/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
"dependencies": {
1313
"@grpc/grpc-js": "^1.12.6",
1414
"@grpc/proto-loader": "^0.8.0",
15-
"abort-controller": "^3.0.0",
1615
"duplexify": "^4.1.3",
1716
"google-auth-library": "^10.1.0",
1817
"google-logging-utils": "^1.1.1",

gax/src/fallbackServiceStub.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@
1515
*/
1616

1717
import type {Response as NodeFetchResponse} from 'node-fetch' with {'resolution-mode': 'import'};
18-
import {AbortController as NodeAbortController} from 'abort-controller';
1918

2019
import {AuthClient, GoogleAuth, gaxios} from 'google-auth-library';
2120
import * as serializer from 'proto3-json-serializer';
2221

23-
import {hasAbortController, isNodeJS} from './featureDetection';
22+
import {isNodeJS} from './featureDetection';
2423
import {StreamArrayParser} from './streamArrayParser';
2524
import {defaultToObjectOptions} from './fallback';
2625
import {pipeline, PipelineSource} from 'stream';
@@ -146,9 +145,7 @@ export function generateServiceStub(
146145
};
147146
}
148147

149-
const cancelController = hasAbortController()
150-
? new AbortController()
151-
: new NodeAbortController();
148+
const cancelController = new AbortController();
152149
const cancelSignal = cancelController.signal as AbortSignal;
153150
let cancelRequested = false;
154151
const url = fetchParameters.url;

gax/src/featureDetection.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ const features = {
2626
// eslint-disable-next-line n/no-unsupported-features/node-builtins
2727
textDecoder: typeof TextDecoder !== 'undefined',
2828
nodeJS: typeof process !== 'undefined' && process?.versions?.node,
29-
abortController: typeof AbortController !== 'undefined',
3029
};
3130

3231
export function hasWindowFetch() {
@@ -36,7 +35,3 @@ export function hasWindowFetch() {
3635
export function isNodeJS() {
3736
return features.nodeJS;
3837
}
39-
40-
export function hasAbortController() {
41-
return features.abortController;
42-
}

gax/src/streamArrayParser.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,9 @@
1414
* limitations under the License.
1515
*/
1616

17-
import {AbortController as NodeAbortController} from 'abort-controller';
1817
import {Transform} from 'stream';
1918

2019
import {decodeResponse} from './fallbackRest';
21-
import {hasAbortController} from './featureDetection';
2220

2321
export class StreamArrayParser extends Transform {
2422
private _done: boolean;
@@ -27,7 +25,7 @@ export class StreamArrayParser extends Transform {
2725
private _isSkipped: boolean;
2826
private _level: number;
2927
rpc: protobuf.Method;
30-
cancelController: AbortController | NodeAbortController;
28+
cancelController: AbortController;
3129
cancelSignal: AbortSignal;
3230
cancelRequested: boolean;
3331
/**
@@ -59,9 +57,7 @@ export class StreamArrayParser extends Transform {
5957
this._isSkipped = false;
6058
this._level = 0;
6159
this.rpc = rpc;
62-
this.cancelController = hasAbortController()
63-
? new AbortController()
64-
: new NodeAbortController();
60+
this.cancelController = new AbortController();
6561
this.cancelSignal = this.cancelController.signal as AbortSignal;
6662
this.cancelRequested = false;
6763
}

gax/test/unit/grpc-fallback.ts

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import assert from 'assert';
2121
import {describe, it, beforeEach, afterEach, after} from 'mocha';
22-
import * as abortController from 'abort-controller';
2322
import * as protobuf from 'protobufjs';
2423
import * as sinon from 'sinon';
2524
import echoProtoJson = require('../fixtures/echo.json');
@@ -28,9 +27,6 @@ import {ClientStubOptions, GoogleAuth, GoogleError} from '../../src';
2827
import {PassThroughClient} from 'google-auth-library';
2928
import {setMockFallbackResponse} from './utils';
3029

31-
// @ts-ignore
32-
const hasAbortController = typeof AbortController !== 'undefined';
33-
3430
let authClient = new PassThroughClient();
3531
let opts = {
3632
auth: new GoogleAuth({authClient}),
@@ -171,11 +167,8 @@ describe('grpc-fallback', () => {
171167
protos: protobuf.NamespaceBase,
172168
echoService: protobuf.Service,
173169
stubOptions: ClientStubOptions;
174-
const createdAbortControllers: string[] = [];
175-
// @ts-ignore
176-
const savedAbortController = hasAbortController
177-
? AbortController
178-
: abortController.AbortController;
170+
const createdAbortControllers: AbortController[] = [];
171+
const savedAbortController = AbortController;
179172

180173
beforeEach(() => {
181174
stubOptions = {
@@ -191,24 +184,21 @@ describe('grpc-fallback', () => {
191184
port: 443,
192185
};
193186

194-
const FakeAbortController = function () {
195-
// @ts-ignore
196-
this.abort = function () {
197-
// @ts-ignore
198-
this.abortCalled = true;
199-
};
200-
// @ts-ignore
201-
createdAbortControllers.push(this);
202-
};
187+
class FakeAbortController extends savedAbortController {
188+
abortCalled = false;
203189

204-
if (hasAbortController) {
205-
// @ts-ignore
206-
// eslint-disable-next-line no-global-assign
207-
AbortController = FakeAbortController;
208-
} else {
209-
// @ts-ignore
210-
abortController.AbortController = FakeAbortController;
190+
constructor() {
191+
super();
192+
createdAbortControllers.push(this);
193+
}
194+
abort(reason?: unknown) {
195+
super.abort(reason);
196+
this.abortCalled = true;
197+
}
211198
}
199+
200+
// eslint-disable-next-line no-global-assign
201+
AbortController = FakeAbortController;
212202
});
213203

214204
beforeEach(() => {
@@ -220,14 +210,8 @@ describe('grpc-fallback', () => {
220210
});
221211

222212
after(() => {
223-
if (hasAbortController) {
224-
// @ts-ignore
225-
// eslint-disable-next-line no-global-assign
226-
AbortController = savedAbortController;
227-
} else {
228-
// @ts-ignore
229-
abortController.AbortController = savedAbortController;
230-
}
213+
// eslint-disable-next-line no-global-assign
214+
AbortController = savedAbortController;
231215
});
232216

233217
it('should send grpc-web version in the header', () => {

0 commit comments

Comments
 (0)