@peerbit/rpc 6.1.3 → 6.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -52,6 +52,7 @@ export declare class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<
52
52
  private _responseType;
53
53
  private _rpcTopic;
54
54
  private _onMessageBinded;
55
+ private _listenerAttached;
55
56
  private _keypair;
56
57
  private _getResponseValueFn;
57
58
  private _getRequestValueFn;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
@@ -81,6 +81,7 @@ let RPC = (() => {
81
81
  _responseType;
82
82
  _rpcTopic;
83
83
  _onMessageBinded = undefined;
84
+ _listenerAttached = false;
84
85
  _keypair;
85
86
  _getResponseValueFn;
86
87
  _getRequestValueFn;
@@ -97,20 +98,67 @@ let RPC = (() => {
97
98
  this._keypair = await X25519Keypair.create();
98
99
  await this.subscribe();
99
100
  }
100
- async _close(from) {
101
+ async _close() {
101
102
  if (this._subscribed) {
102
103
  await this.node.services.pubsub.unsubscribe(this.topic);
104
+ this._subscribed = false;
105
+ }
106
+ if (this._listenerAttached) {
103
107
  await this.node.services.pubsub.removeEventListener("data", this._onMessageBinded);
108
+ this._listenerAttached = false;
104
109
  }
105
- this._subscribed = false;
106
110
  }
107
111
  async close(from) {
108
- await this._close(from);
109
- return super.close(from);
112
+ let firstError;
113
+ let closed = false;
114
+ try {
115
+ closed = await super.close(from);
116
+ }
117
+ catch (error) {
118
+ if (!this.closed || this.pendingTerminalOperation !== "close") {
119
+ throw error;
120
+ }
121
+ firstError = error;
122
+ }
123
+ if (!closed && firstError === undefined) {
124
+ return false;
125
+ }
126
+ try {
127
+ await this._close();
128
+ }
129
+ catch (error) {
130
+ firstError ??= error;
131
+ }
132
+ if (firstError !== undefined) {
133
+ throw firstError;
134
+ }
135
+ return true;
110
136
  }
111
137
  async drop(from) {
112
- await this._close(from);
113
- return super.drop(from);
138
+ let firstError;
139
+ let dropped = false;
140
+ try {
141
+ dropped = await super.drop(from);
142
+ }
143
+ catch (error) {
144
+ if (!this.closed || this.pendingTerminalOperation !== "drop") {
145
+ throw error;
146
+ }
147
+ firstError = error;
148
+ }
149
+ if (!dropped && firstError === undefined) {
150
+ return false;
151
+ }
152
+ try {
153
+ await this._close();
154
+ }
155
+ catch (error) {
156
+ firstError ??= error;
157
+ }
158
+ if (firstError !== undefined) {
159
+ throw firstError;
160
+ }
161
+ return true;
114
162
  }
115
163
  _subscribing;
116
164
  async subscribe() {
@@ -121,11 +169,15 @@ let RPC = (() => {
121
169
  this._subscribed = true;
122
170
  this._onMessageBinded = this._onMessageBinded || this._onMessage.bind(this);
123
171
  this.node.services.pubsub.addEventListener("data", this._onMessageBinded);
172
+ this._listenerAttached = true;
124
173
  this._subscribing = this.node.services.pubsub.subscribe(this.topic);
125
174
  await this._subscribing;
126
175
  logger.trace("subscribing to query topic (responses): " + this.topic);
127
176
  }
128
177
  async _onMessage(evt) {
178
+ if (this.closed) {
179
+ return;
180
+ }
129
181
  const { data, message } = evt.detail;
130
182
  if (data?.topics.find((x) => x === this.topic) != null) {
131
183
  let rpcMessage;
@@ -165,6 +217,9 @@ let RPC = (() => {
165
217
  const decrypted = await maybeEncrypted.decrypt(this.node.services.keychain);
166
218
  request = this._getRequestValueFn(decrypted);
167
219
  }
220
+ if (this.closed) {
221
+ return;
222
+ }
168
223
  stage = "handle-request";
169
224
  let from = message.header.signatures.publicKeys[0];
170
225
  this.events.dispatchEvent(new CustomEvent("request", {
@@ -181,7 +236,7 @@ let RPC = (() => {
181
236
  message: message,
182
237
  transport,
183
238
  });
184
- if (response && rpcMessage.respondTo) {
239
+ if (!this.closed && response && rpcMessage.respondTo) {
185
240
  // send query and wait for replies in a generator like behaviour
186
241
  stage = "encode-response";
187
242
  const serializedResponse = serialize(response);
@@ -195,6 +250,9 @@ let RPC = (() => {
195
250
  });
196
251
  let maybeEncryptedMessage = decryptedMessage;
197
252
  maybeEncryptedMessage = await decryptedMessage.encrypt(this._keypair, [rpcMessage.respondTo]);
253
+ if (this.closed) {
254
+ return;
255
+ }
198
256
  await this.node.services.pubsub.publish(serialize(new ResponseV0({
199
257
  response: maybeEncryptedMessage,
200
258
  requestId: message.id,
@@ -381,11 +439,40 @@ let RPC = (() => {
381
439
  * @returns
382
440
  */
383
441
  async request(request, options) {
384
- // We are generatinga new encryption keypair for each send, so we now that when we get the responses, they are encrypted specifcally for me, and for this request
385
- // this allows us to easily disregard a bunch of message just beacuse they are for a different receiver!
386
- const keypair = await X25519Keypair.create();
387
- const requestMessage = await this.seal(request, keypair.publicKey, options);
388
- const requestBytes = serialize(requestMessage);
442
+ const requestSignal = options?.signal;
443
+ const getAbortReason = (signal) => signal?.reason === undefined ? new AbortError() : signal.reason;
444
+ if (requestSignal?.aborted) {
445
+ throw getAbortReason(requestSignal);
446
+ }
447
+ let rejectSetupForAbort;
448
+ const setupAbortPromise = new Promise((_resolve, reject) => {
449
+ rejectSetupForAbort = reject;
450
+ });
451
+ const setupAbortListener = () => {
452
+ rejectSetupForAbort(getAbortReason(requestSignal));
453
+ };
454
+ requestSignal?.addEventListener("abort", setupAbortListener, { once: true });
455
+ const setupPromise = (async () => {
456
+ // We are generatinga new encryption keypair for each send, so we now that when we get the responses, they are encrypted specifcally for me, and for this request
457
+ // this allows us to easily disregard a bunch of message just beacuse they are for a different receiver!
458
+ const keypair = await X25519Keypair.create();
459
+ if (requestSignal?.aborted) {
460
+ throw getAbortReason(requestSignal);
461
+ }
462
+ const requestMessage = await this.seal(request, keypair.publicKey, options);
463
+ return { keypair, requestBytes: serialize(requestMessage) };
464
+ })();
465
+ let setup;
466
+ try {
467
+ setup = await Promise.race([setupPromise, setupAbortPromise]);
468
+ }
469
+ finally {
470
+ requestSignal?.removeEventListener("abort", setupAbortListener);
471
+ }
472
+ const { keypair, requestBytes } = setup;
473
+ if (requestSignal?.aborted) {
474
+ throw getAbortReason(requestSignal);
475
+ }
389
476
  const allResults = [];
390
477
  const deferredPromise = pDefer();
391
478
  const publishAbortController = new AbortController();
@@ -401,12 +488,24 @@ let RPC = (() => {
401
488
  abortPublish(new AbortError("RPC request timeout"));
402
489
  deferredPromise.resolve();
403
490
  }, options?.timeout || 10 * 1000);
404
- const abortListener = (err) => {
405
- const reason = err.target?.["reason"] || new AbortError();
491
+ const rejectForAbort = (signal) => {
492
+ const reason = getAbortReason(signal);
406
493
  abortPublish(reason);
407
494
  deferredPromise.reject(reason);
408
495
  };
409
- options?.signal?.addEventListener("abort", abortListener);
496
+ const abortListener = (event) => {
497
+ rejectForAbort(event.target);
498
+ };
499
+ requestSignal?.addEventListener("abort", abortListener);
500
+ // Cover the narrow handoff between the setup listener and the active request
501
+ // listener before registering any resolver or transport side effects.
502
+ if (requestSignal?.aborted) {
503
+ const reason = getAbortReason(requestSignal);
504
+ abortPublish(reason);
505
+ clearTimeout(timeoutFn);
506
+ requestSignal.removeEventListener("abort", abortListener);
507
+ throw reason;
508
+ }
410
509
  const closeListener = () => {
411
510
  const reason = new AbortError("Closed");
412
511
  abortPublish(reason);
@@ -430,13 +529,20 @@ let RPC = (() => {
430
529
  abortPublish(new AbortError("Resolved early"));
431
530
  })
432
531
  .catch(() => { });
433
- if (options?.responseInterceptor) {
434
- options.responseInterceptor((response) => {
435
- return this.handleDecodedResponse(response, deferredPromise, allResults, responders, expectedResponders, options);
436
- });
437
- }
438
532
  try {
439
- const publishPromise = Promise.resolve(this.node.services.pubsub.publish(requestBytes, this.getPublishOptions(messageId, options, publishAbortController.signal)))
533
+ if (requestSignal?.aborted) {
534
+ throw getAbortReason(requestSignal);
535
+ }
536
+ if (options?.responseInterceptor) {
537
+ options.responseInterceptor((response) => {
538
+ return this.handleDecodedResponse(response, deferredPromise, allResults, responders, expectedResponders, options);
539
+ });
540
+ }
541
+ if (requestSignal?.aborted) {
542
+ throw getAbortReason(requestSignal);
543
+ }
544
+ const publishPromise = Promise.resolve()
545
+ .then(() => this.node.services.pubsub.publish(requestBytes, this.getPublishOptions(messageId, options, publishAbortController.signal)))
440
546
  .catch((error) => {
441
547
  if (publishAbortController.signal.aborted &&
442
548
  (error instanceof AbortError ||
@@ -452,17 +558,12 @@ let RPC = (() => {
452
558
  await Promise.race([publishPromise, deferredPromise.promise]);
453
559
  await deferredPromise.promise;
454
560
  }
455
- catch (error) {
456
- if (!(error instanceof TimeoutError)) {
457
- throw error;
458
- }
459
- }
460
561
  finally {
461
562
  abortPublish(new AbortError("RPC request finished"));
462
563
  clearTimeout(timeoutFn);
463
564
  this.events.removeEventListener("close", closeListener);
464
565
  this.events.removeEventListener("drop", dropListener);
465
- options?.signal?.removeEventListener("abort", abortListener);
566
+ requestSignal?.removeEventListener("abort", abortListener);
466
567
  this._responseResolver.delete(id);
467
568
  }
468
569
  return allResults;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/rpc",
3
- "version": "6.1.3",
3
+ "version": "6.1.4",
4
4
  "description": "RPC calls for peers",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -49,21 +49,21 @@
49
49
  "publishConfig": {
50
50
  "access": "public"
51
51
  },
52
- "author": "dao.xyz",
52
+ "author": "Peerbit contributors",
53
53
  "license": "MIT",
54
54
  "dependencies": {
55
55
  "@dao-xyz/borsh": "^6.0.0",
56
56
  "p-defer": "^4.0.0",
57
- "@peerbit/crypto": "3.1.2",
57
+ "@peerbit/crypto": "3.1.3",
58
+ "@peerbit/program": "6.0.36",
58
59
  "@peerbit/logger": "2.0.1",
59
- "@peerbit/program": "6.0.35",
60
- "@peerbit/time": "3.0.0",
61
- "@peerbit/pubsub": "5.3.0",
62
- "@peerbit/pubsub-interface": "5.1.5",
63
- "@peerbit/stream-interface": "6.0.11"
60
+ "@peerbit/time": "3.0.1",
61
+ "@peerbit/pubsub": "5.3.1",
62
+ "@peerbit/pubsub-interface": "5.1.6",
63
+ "@peerbit/stream-interface": "6.0.12"
64
64
  },
65
65
  "devDependencies": {
66
- "@peerbit/test-utils": "3.1.6"
66
+ "@peerbit/test-utils": "3.1.7"
67
67
  },
68
68
  "scripts": {
69
69
  "clean": "aegir clean",
package/src/controller.ts CHANGED
@@ -129,6 +129,7 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
129
129
  private _responseType!: AbstractType<R>;
130
130
  private _rpcTopic!: string;
131
131
  private _onMessageBinded: ((arg: any) => any) | undefined = undefined;
132
+ private _listenerAttached = false;
132
133
  private _keypair!: X25519Keypair;
133
134
  private _getResponseValueFn!: (decrypted: DecryptedThing<R>) => R;
134
135
  private _getRequestValueFn!: (decrypted: DecryptedThing<Q>) => Q;
@@ -148,24 +149,67 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
148
149
  await this.subscribe();
149
150
  }
150
151
 
151
- private async _close(from?: Program): Promise<void> {
152
+ private async _close(): Promise<void> {
152
153
  if (this._subscribed) {
153
154
  await this.node.services.pubsub.unsubscribe(this.topic);
155
+ this._subscribed = false;
156
+ }
157
+ if (this._listenerAttached) {
154
158
  await this.node.services.pubsub.removeEventListener(
155
159
  "data",
156
160
  this._onMessageBinded,
157
161
  );
162
+ this._listenerAttached = false;
158
163
  }
159
- this._subscribed = false;
160
164
  }
161
165
  public async close(from?: Program): Promise<boolean> {
162
- await this._close(from);
163
- return super.close(from);
166
+ let firstError: unknown;
167
+ let closed = false;
168
+ try {
169
+ closed = await super.close(from);
170
+ } catch (error) {
171
+ if (!this.closed || this.pendingTerminalOperation !== "close") {
172
+ throw error;
173
+ }
174
+ firstError = error;
175
+ }
176
+ if (!closed && firstError === undefined) {
177
+ return false;
178
+ }
179
+ try {
180
+ await this._close();
181
+ } catch (error) {
182
+ firstError ??= error;
183
+ }
184
+ if (firstError !== undefined) {
185
+ throw firstError;
186
+ }
187
+ return true;
164
188
  }
165
189
 
166
190
  public async drop(from?: Program): Promise<boolean> {
167
- await this._close(from);
168
- return super.drop(from);
191
+ let firstError: unknown;
192
+ let dropped = false;
193
+ try {
194
+ dropped = await super.drop(from);
195
+ } catch (error) {
196
+ if (!this.closed || this.pendingTerminalOperation !== "drop") {
197
+ throw error;
198
+ }
199
+ firstError = error;
200
+ }
201
+ if (!dropped && firstError === undefined) {
202
+ return false;
203
+ }
204
+ try {
205
+ await this._close();
206
+ } catch (error) {
207
+ firstError ??= error;
208
+ }
209
+ if (firstError !== undefined) {
210
+ throw firstError;
211
+ }
212
+ return true;
169
213
  }
170
214
 
171
215
  private _subscribing: Promise<void> | void | undefined;
@@ -180,6 +224,7 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
180
224
  this._onMessageBinded = this._onMessageBinded || this._onMessage.bind(this);
181
225
 
182
226
  this.node.services.pubsub.addEventListener("data", this._onMessageBinded!);
227
+ this._listenerAttached = true;
183
228
 
184
229
  this._subscribing = this.node.services.pubsub.subscribe(this.topic);
185
230
 
@@ -188,6 +233,9 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
188
233
  }
189
234
 
190
235
  private async _onMessage(evt: CustomEvent<DataEvent>): Promise<void> {
236
+ if (this.closed) {
237
+ return;
238
+ }
191
239
  const { data, message } = evt.detail;
192
240
 
193
241
  if (data?.topics.find((x) => x === this.topic) != null) {
@@ -232,6 +280,9 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
232
280
  );
233
281
  request = this._getRequestValueFn(decrypted);
234
282
  }
283
+ if (this.closed) {
284
+ return;
285
+ }
235
286
  stage = "handle-request";
236
287
  let from = message.header.signatures!.publicKeys[0];
237
288
 
@@ -253,7 +304,7 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
253
304
  transport,
254
305
  });
255
306
 
256
- if (response && rpcMessage.respondTo) {
307
+ if (!this.closed && response && rpcMessage.respondTo) {
257
308
  // send query and wait for replies in a generator like behaviour
258
309
  stage = "encode-response";
259
310
  const serializedResponse = serialize(response);
@@ -274,6 +325,9 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
274
325
  this._keypair,
275
326
  [rpcMessage.respondTo],
276
327
  );
328
+ if (this.closed) {
329
+ return;
330
+ }
277
331
 
278
332
  await this.node.services.pubsub.publish(
279
333
  serialize(
@@ -554,12 +608,45 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
554
608
  request: Q,
555
609
  options?: RPCRequestOptions<R>,
556
610
  ): Promise<RPCResponse<R>[]> {
557
- // We are generatinga new encryption keypair for each send, so we now that when we get the responses, they are encrypted specifcally for me, and for this request
558
- // this allows us to easily disregard a bunch of message just beacuse they are for a different receiver!
559
- const keypair = await X25519Keypair.create();
611
+ const requestSignal = options?.signal;
612
+ const getAbortReason = (signal?: AbortSignal): unknown =>
613
+ signal?.reason === undefined ? new AbortError() : signal.reason;
614
+ if (requestSignal?.aborted) {
615
+ throw getAbortReason(requestSignal);
616
+ }
560
617
 
561
- const requestMessage = await this.seal(request, keypair.publicKey, options);
562
- const requestBytes = serialize(requestMessage);
618
+ let rejectSetupForAbort!: (reason?: unknown) => void;
619
+ const setupAbortPromise = new Promise<never>((_resolve, reject) => {
620
+ rejectSetupForAbort = reject;
621
+ });
622
+ const setupAbortListener = () => {
623
+ rejectSetupForAbort(getAbortReason(requestSignal));
624
+ };
625
+ requestSignal?.addEventListener("abort", setupAbortListener, { once: true });
626
+ const setupPromise = (async () => {
627
+ // We are generatinga new encryption keypair for each send, so we now that when we get the responses, they are encrypted specifcally for me, and for this request
628
+ // this allows us to easily disregard a bunch of message just beacuse they are for a different receiver!
629
+ const keypair = await X25519Keypair.create();
630
+ if (requestSignal?.aborted) {
631
+ throw getAbortReason(requestSignal);
632
+ }
633
+ const requestMessage = await this.seal(
634
+ request,
635
+ keypair.publicKey,
636
+ options,
637
+ );
638
+ return { keypair, requestBytes: serialize(requestMessage) };
639
+ })();
640
+ let setup: Awaited<typeof setupPromise>;
641
+ try {
642
+ setup = await Promise.race([setupPromise, setupAbortPromise]);
643
+ } finally {
644
+ requestSignal?.removeEventListener("abort", setupAbortListener);
645
+ }
646
+ const { keypair, requestBytes } = setup;
647
+ if (requestSignal?.aborted) {
648
+ throw getAbortReason(requestSignal);
649
+ }
563
650
 
564
651
  const allResults: RPCResponse<R>[] = [];
565
652
 
@@ -582,12 +669,24 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
582
669
  options?.timeout || 10 * 1000,
583
670
  );
584
671
 
585
- const abortListener = (err: Event) => {
586
- const reason = (err.target as any)?.["reason"] || new AbortError();
672
+ const rejectForAbort = (signal?: AbortSignal) => {
673
+ const reason = getAbortReason(signal);
587
674
  abortPublish(reason);
588
675
  deferredPromise.reject(reason);
589
676
  };
590
- options?.signal?.addEventListener("abort", abortListener);
677
+ const abortListener = (event: Event) => {
678
+ rejectForAbort(event.target as AbortSignal | undefined);
679
+ };
680
+ requestSignal?.addEventListener("abort", abortListener);
681
+ // Cover the narrow handoff between the setup listener and the active request
682
+ // listener before registering any resolver or transport side effects.
683
+ if (requestSignal?.aborted) {
684
+ const reason = getAbortReason(requestSignal);
685
+ abortPublish(reason);
686
+ clearTimeout(timeoutFn);
687
+ requestSignal.removeEventListener("abort", abortListener);
688
+ throw reason;
689
+ }
591
690
 
592
691
  const closeListener = () => {
593
692
  const reason = new AbortError("Closed");
@@ -625,30 +724,36 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
625
724
  })
626
725
  .catch(() => {});
627
726
 
628
- if (options?.responseInterceptor) {
629
- options.responseInterceptor((response: RPCResponse<R>) => {
630
- return this.handleDecodedResponse(
631
- response,
632
- deferredPromise,
633
- allResults,
634
- responders,
635
- expectedResponders,
636
- options,
637
- );
638
- });
639
- }
640
-
641
727
  try {
642
- const publishPromise = Promise.resolve(
643
- this.node.services.pubsub.publish(
644
- requestBytes,
645
- this.getPublishOptions(
646
- messageId,
728
+ if (requestSignal?.aborted) {
729
+ throw getAbortReason(requestSignal);
730
+ }
731
+ if (options?.responseInterceptor) {
732
+ options.responseInterceptor((response: RPCResponse<R>) => {
733
+ return this.handleDecodedResponse(
734
+ response,
735
+ deferredPromise,
736
+ allResults,
737
+ responders,
738
+ expectedResponders,
647
739
  options,
648
- publishAbortController.signal,
740
+ );
741
+ });
742
+ }
743
+ if (requestSignal?.aborted) {
744
+ throw getAbortReason(requestSignal);
745
+ }
746
+ const publishPromise = Promise.resolve()
747
+ .then(() =>
748
+ this.node.services.pubsub.publish(
749
+ requestBytes,
750
+ this.getPublishOptions(
751
+ messageId,
752
+ options,
753
+ publishAbortController.signal,
754
+ ),
649
755
  ),
650
- ),
651
- )
756
+ )
652
757
  .catch((error: any) => {
653
758
  if (
654
759
  publishAbortController.signal.aborted &&
@@ -665,16 +770,12 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
665
770
  });
666
771
  await Promise.race([publishPromise, deferredPromise.promise]);
667
772
  await deferredPromise.promise;
668
- } catch (error: any) {
669
- if (!(error instanceof TimeoutError)) {
670
- throw error;
671
- }
672
773
  } finally {
673
774
  abortPublish(new AbortError("RPC request finished"));
674
775
  clearTimeout(timeoutFn);
675
776
  this.events.removeEventListener("close", closeListener);
676
777
  this.events.removeEventListener("drop", dropListener);
677
- options?.signal?.removeEventListener("abort", abortListener);
778
+ requestSignal?.removeEventListener("abort", abortListener);
678
779
  this._responseResolver.delete(id);
679
780
  }
680
781