@@ -208,6 +208,7 @@ class InternalInstance {
208208 private parent : null | InternalInstance
209209 private globalHandlers = new Handlers ( )
210210 private resolved = null as Promise < Record < string , any > > | null
211+ private eventAborter = new AbortController ( ) ;
211212 child : null | InternalInstance = null
212213
213214 constructor (
@@ -272,14 +273,17 @@ class InternalInstance {
272273
273274 consume ( stateGenerator : ( ( ) => StateDefinition ) | ( ( ) => Generator < Yielded , StateDefinition , never > ) ) {
274275 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?
275277 target . removeEventListener ( event , this ) ;
276278 }
279+ this . eventAborter . abort ( ) ;
277280
278281 const initialReturn = stateGenerator ( ) ;
279282
280283 this . willEnter ( ) ;
281284
282285 this . globalHandlers . reset ( ) ;
286+ this . eventAborter = new AbortController ( ) ;
283287
284288 if ( initialReturn [ Symbol . iterator ] ) {
285289 const iterator = initialReturn [ Symbol . iterator ] ( ) ;
@@ -308,7 +312,7 @@ class InternalInstance {
308312 }
309313
310314 for ( const [ event , target ] of this . globalHandlers . eventsToListenTo ) {
311- target . addEventListener ( event , this ) ;
315+ target . addEventListener ( event , this , { signal : this . eventAborter . signal } ) ;
312316 }
313317
314318 } else if ( typeof initialReturn === 'function' ) {
0 commit comments