fix: Remove test listeners after the event has happened (#9115)

This commit is contained in:
Stevche Radevski
2024-09-12 10:45:58 +02:00
committed by GitHub
parent 4471b25ea7
commit c94f89610f

View File

@@ -6,8 +6,9 @@ export const waitSubscribersExecution = (
eventName: string,
eventBus: IEventBusModuleService
) => {
const subscriberPromises: Promise<any>[] = []
const eventEmitter: EventEmitter = (eventBus as any).eventEmitter_
const subscriberPromises: Promise<any>[] = []
const originalListeners = eventEmitter.listeners(eventName)
// If there are no existing listeners, resolve once the event happens. Otherwise, wrap the existing subscribers in a promise and resolve once they are done.
if (!eventEmitter.listeners(eventName).length) {
@@ -38,5 +39,10 @@ export const waitSubscribersExecution = (
})
}
return Promise.all(subscriberPromises)
return Promise.all(subscriberPromises).finally(() => {
eventEmitter.removeAllListeners(eventName)
originalListeners.forEach((listener) => {
eventEmitter.on(eventName, listener as (...args: any) => void)
})
})
}