@@ -208,6 +208,7 @@ class InternalInstance {
208
208
private parent : null | InternalInstance
209
209
private globalHandlers = new Handlers ( )
210
210
private resolved = null as Promise < Record < string , any > > | null
211
+ private eventAborter = new AbortController ( ) ;
211
212
child : null | InternalInstance = null
212
213
213
214
constructor (
@@ -272,14 +273,17 @@ class InternalInstance {
272
273
273
274
consume ( stateGenerator : ( ( ) => StateDefinition ) | ( ( ) => Generator < Yielded , StateDefinition , never > ) ) {
274
275
for ( const [ event , target ] of this . globalHandlers . eventsToListenTo ) {
276
+ // Not sure if we still need this if we have abort signals, and for what versions of Node/browsers?
275
277
target . removeEventListener ( event , this ) ;
276
278
}
279
+ this . eventAborter . abort ( ) ;
277
280
278
281
const initialReturn = stateGenerator ( ) ;
279
282
280
283
this . willEnter ( ) ;
281
284
282
285
this . globalHandlers . reset ( ) ;
286
+ this . eventAborter = new AbortController ( ) ;
283
287
284
288
if ( initialReturn [ Symbol . iterator ] ) {
285
289
const iterator = initialReturn [ Symbol . iterator ] ( ) ;
@@ -308,7 +312,7 @@ class InternalInstance {
308
312
}
309
313
310
314
for ( const [ event , target ] of this . globalHandlers . eventsToListenTo ) {
311
- target . addEventListener ( event , this ) ;
315
+ target . addEventListener ( event , this , { signal : this . eventAborter . signal } ) ;
312
316
}
313
317
314
318
} else if ( typeof initialReturn === 'function' ) {
0 commit comments