@@ -42,15 +42,18 @@ export class UdpApi extends AbstractApi {
42
42
const [ hostname , port ] = path . split ( ':' ) ;
43
43
44
44
return new Promise < AbstractApiAwaitedResult < 'write' > > ( resolve => {
45
- signal ?. addEventListener ( 'abort' , ( ) => {
45
+ const listener = ( ) => {
46
46
resolve (
47
47
this . error ( {
48
48
error : ERRORS . ABORTED_BY_SIGNAL ,
49
49
} ) ,
50
50
) ;
51
- } ) ;
51
+ } ;
52
+ signal ?. addEventListener ( 'abort' , listener ) ;
52
53
53
54
this . interface . send ( buffer , Number . parseInt ( port , 10 ) , hostname , err => {
55
+ signal ?. removeEventListener ( 'abort' , listener ) ;
56
+
54
57
if ( signal ?. aborted ) {
55
58
return ;
56
59
}
@@ -75,13 +78,13 @@ export class UdpApi extends AbstractApi {
75
78
this . communicating = true ;
76
79
77
80
return new Promise < AbstractApiAwaitedResult < 'read' > > ( resolve => {
81
+ /* eslint-disable @typescript-eslint/no-use-before-define */
78
82
const onClear = ( ) => {
79
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
80
83
this . interface . removeListener ( 'error' , onError ) ;
81
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
82
84
this . interface . removeListener ( 'message' , onMessage ) ;
85
+ signal ?. removeEventListener ( 'abort' , onAbort ) ;
83
86
} ;
84
-
87
+ /* eslint-enable @typescript-eslint/no-use-before-define */
85
88
const onError = ( err : Error ) => {
86
89
this . logger ?. error ( err . message ) ;
87
90
@@ -126,21 +129,22 @@ export class UdpApi extends AbstractApi {
126
129
}
127
130
128
131
const pinged = new Promise < boolean > ( resolve => {
129
- const onError = ( ) => {
130
- resolve ( false ) ;
132
+ /* eslint-disable @typescript-eslint/no-use-before-define */
133
+ const onClear = ( ) => {
131
134
this . interface . removeListener ( 'error' , onError ) ;
132
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
133
135
this . interface . removeListener ( 'message' , onMessage ) ;
134
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
135
136
clearTimeout ( timeout ) ;
137
+ signal ?. removeEventListener ( 'abort' , onError ) ;
138
+ } ;
139
+ /* eslint-enable @typescript-eslint/no-use-before-define */
140
+ const onError = ( ) => {
141
+ resolve ( false ) ;
142
+ onClear ( ) ;
136
143
} ;
137
144
const onMessage = ( message : Buffer , _info : UDP . RemoteInfo ) => {
138
145
if ( message . toString ( ) === 'PONGPONG' ) {
139
146
resolve ( true ) ;
140
- this . interface . removeListener ( 'error' , onError ) ;
141
- this . interface . removeListener ( 'message' , onMessage ) ;
142
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
143
- clearTimeout ( timeout ) ;
147
+ onClear ( ) ;
144
148
}
145
149
} ;
146
150
0 commit comments