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

This commit is contained in:
Stevche Radevski authored and GitHub committed 2024-09-12 10:45:58 +02:00
1 parent 4471b25ea7
commit c94f89610f
1 file changed
+8 -2
@@ -6,8 +6,9 @@ export const waitSubscribersExecution = (
eventName: string, eventName: string,
eventBus: IEventBusModuleService eventBus: IEventBusModuleService
) => { ) => {
const subscriberPromises: Promise<any>[] = []
const eventEmitter: EventEmitter = (eventBus as any).eventEmitter_ 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 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) { 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)
})
})
} }