@@ -27,14 +27,6 @@ export class ConnOptions {
27
27
toServerMiddleware ?: PacketMiddleware [ ] = [ ] ;
28
28
}
29
29
30
- export interface PacketCanceler {
31
- /** Has property .isCanceled: boolean indicating if the packet has been canceled by another middleware.
32
- * Use `cancel(false)` to un-cancel the packet again.
33
- */
34
- ( unCancel ?: boolean ) : void ;
35
- isCanceled : boolean ;
36
- }
37
-
38
30
export interface packetUpdater {
39
31
( update ?: boolean ) : void ;
40
32
isUpdated : boolean ;
@@ -61,7 +53,7 @@ export interface PacketMiddleware {
61
53
( packetData : PacketData ) : PacketMiddlewareReturnValue | Promise < PacketMiddlewareReturnValue > ;
62
54
}
63
55
64
- type PacketMiddlewareReturnValue = PacketData | undefined | false ;
56
+ type PacketMiddlewareReturnValue = PacketData | undefined | false | true ;
65
57
66
58
export class Conn {
67
59
options : ConnOptions ;
@@ -167,8 +159,14 @@ export class Conn {
167
159
} else {
168
160
data = funcReturn ;
169
161
}
170
- isCanceled = data === false ;
171
- if ( data !== undefined && data !== false ) {
162
+ if ( ! isCanceled ) { // Wait for the first occurrence
163
+ isCanceled = data === false ;
164
+ } else {
165
+ if ( data === true ) {
166
+ isCanceled = false ; // Allow following middlewares to un cancel packet that have been canceled already
167
+ }
168
+ }
169
+ if ( data !== undefined && data !== false && data !== true ) {
172
170
currentData = data ;
173
171
}
174
172
}
@@ -225,8 +223,14 @@ export class Conn {
225
223
} else {
226
224
data = funcReturn ;
227
225
}
228
- isCanceled = data === false ;
229
- if ( data !== undefined && data !== false ) {
226
+ if ( ! isCanceled ) { // Wait for the first occurrence
227
+ isCanceled = data === false ;
228
+ } else {
229
+ if ( data === true ) {
230
+ isCanceled = false ; // Allow following middlewares to un cancel packet that have been canceled already
231
+ }
232
+ }
233
+ if ( data !== undefined && data !== false && data !== true ) {
230
234
currentData = data ;
231
235
}
232
236
}
0 commit comments