@@ -14,9 +14,9 @@ export default class AbortSignal extends EventTarget {
14
14
protected declare static [ PropertySymbol . window ] : BrowserWindow ;
15
15
protected declare [ PropertySymbol . window ] : BrowserWindow ;
16
16
17
- // Public properties
18
- public readonly aborted : boolean = false ;
19
- public reason : any = null ;
17
+ // Internal properties
18
+ public [ PropertySymbol . aborted ] : boolean = false ;
19
+ public [ PropertySymbol . reason ] : any = undefined ;
20
20
21
21
// Events
22
22
public onabort : ( ( this : AbortSignal , event : Event ) => void ) | null = null ;
@@ -28,9 +28,7 @@ export default class AbortSignal extends EventTarget {
28
28
super ( ) ;
29
29
30
30
if ( ! this [ PropertySymbol . window ] ) {
31
- throw new TypeError (
32
- `Failed to construct '${ this . constructor . name } ': '${ this . constructor . name } ' was constructed outside a Window context.`
33
- ) ;
31
+ throw new TypeError ( `Failed to construct 'AbortSignal': Illegal constructor` ) ;
34
32
}
35
33
}
36
34
@@ -41,6 +39,42 @@ export default class AbortSignal extends EventTarget {
41
39
return 'AbortSignal' ;
42
40
}
43
41
42
+ /**
43
+ * Returns true if the signal has been aborted.
44
+ *
45
+ * @returns True if the signal has been aborted.
46
+ */
47
+ public get aborted ( ) : boolean {
48
+ return this [ PropertySymbol . aborted ] ;
49
+ }
50
+
51
+ /**
52
+ * Setter for aborted. Value will be ignored as the property is read-only.
53
+ *
54
+ * @param _value Aborted.
55
+ */
56
+ public set aborted ( _value : boolean ) {
57
+ // Do nothing
58
+ }
59
+
60
+ /**
61
+ * Returns the reason the signal was aborted.
62
+ *
63
+ * @returns Reason.
64
+ */
65
+ public get reason ( ) : any {
66
+ return this [ PropertySymbol . reason ] ;
67
+ }
68
+
69
+ /**
70
+ * Setter for reason. Value will be ignored as the property is read-only.
71
+ *
72
+ * @param _value Reason.
73
+ */
74
+ public set reason ( _value : any ) {
75
+ // Do nothing
76
+ }
77
+
44
78
/**
45
79
* Aborts the signal.
46
80
*
@@ -50,14 +84,14 @@ export default class AbortSignal extends EventTarget {
50
84
if ( this . aborted ) {
51
85
return ;
52
86
}
53
- this . reason =
87
+ this [ PropertySymbol . reason ] =
54
88
reason !== undefined
55
89
? reason
56
90
: new this [ PropertySymbol . window ] . DOMException (
57
91
'signal is aborted without reason' ,
58
92
DOMExceptionNameEnum . abortError
59
- ) ;
60
- ( < boolean > this . aborted ) = true ;
93
+ ) ;
94
+ this [ PropertySymbol . aborted ] = true ;
61
95
this . dispatchEvent ( new Event ( 'abort' ) ) ;
62
96
}
63
97
@@ -78,14 +112,14 @@ export default class AbortSignal extends EventTarget {
78
112
*/
79
113
public static abort ( reason ?: any ) : AbortSignal {
80
114
const signal = new this ( ) ;
81
- signal . reason =
115
+ signal [ PropertySymbol . reason ] =
82
116
reason !== undefined
83
117
? reason
84
118
: new this [ PropertySymbol . window ] . DOMException (
85
119
'signal is aborted without reason' ,
86
120
DOMExceptionNameEnum . abortError
87
- ) ;
88
- ( < boolean > signal . aborted ) = true ;
121
+ ) ;
122
+ signal [ PropertySymbol . aborted ] = true ;
89
123
return signal ;
90
124
}
91
125
@@ -120,8 +154,8 @@ export default class AbortSignal extends EventTarget {
120
154
*/
121
155
public static any ( signals : AbortSignal [ ] ) : AbortSignal {
122
156
for ( const signal of signals ) {
123
- if ( signal . aborted ) {
124
- return this . abort ( signal . reason ) ;
157
+ if ( signal [ PropertySymbol . aborted ] ) {
158
+ return this . abort ( signal [ PropertySymbol . reason ] ) ;
125
159
}
126
160
}
127
161
@@ -137,7 +171,7 @@ export default class AbortSignal extends EventTarget {
137
171
for ( const signal of signals ) {
138
172
const handler = ( ) : void => {
139
173
stopListening ( ) ;
140
- anySignal [ PropertySymbol . abort ] ( signal . reason ) ;
174
+ anySignal [ PropertySymbol . abort ] ( signal [ PropertySymbol . reason ] ) ;
141
175
} ;
142
176
handlers . set ( signal , handler ) ;
143
177
signal . addEventListener ( 'abort' , handler ) ;
0 commit comments