main
Last change
on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago |
Initial commit
|
-
Property mode
set to
100644
|
File size:
968 bytes
|
Line | |
---|
1 | const { addAbortListener } = require('../core/util')
|
---|
2 | const { RequestAbortedError } = require('../core/errors')
|
---|
3 |
|
---|
4 | const kListener = Symbol('kListener')
|
---|
5 | const kSignal = Symbol('kSignal')
|
---|
6 |
|
---|
7 | function abort (self) {
|
---|
8 | if (self.abort) {
|
---|
9 | self.abort()
|
---|
10 | } else {
|
---|
11 | self.onError(new RequestAbortedError())
|
---|
12 | }
|
---|
13 | }
|
---|
14 |
|
---|
15 | function addSignal (self, signal) {
|
---|
16 | self[kSignal] = null
|
---|
17 | self[kListener] = null
|
---|
18 |
|
---|
19 | if (!signal) {
|
---|
20 | return
|
---|
21 | }
|
---|
22 |
|
---|
23 | if (signal.aborted) {
|
---|
24 | abort(self)
|
---|
25 | return
|
---|
26 | }
|
---|
27 |
|
---|
28 | self[kSignal] = signal
|
---|
29 | self[kListener] = () => {
|
---|
30 | abort(self)
|
---|
31 | }
|
---|
32 |
|
---|
33 | addAbortListener(self[kSignal], self[kListener])
|
---|
34 | }
|
---|
35 |
|
---|
36 | function removeSignal (self) {
|
---|
37 | if (!self[kSignal]) {
|
---|
38 | return
|
---|
39 | }
|
---|
40 |
|
---|
41 | if ('removeEventListener' in self[kSignal]) {
|
---|
42 | self[kSignal].removeEventListener('abort', self[kListener])
|
---|
43 | } else {
|
---|
44 | self[kSignal].removeListener('abort', self[kListener])
|
---|
45 | }
|
---|
46 |
|
---|
47 | self[kSignal] = null
|
---|
48 | self[kListener] = null
|
---|
49 | }
|
---|
50 |
|
---|
51 | module.exports = {
|
---|
52 | addSignal,
|
---|
53 | removeSignal
|
---|
54 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.