diff --git a/packages/core/medusa-test-utils/src/events.ts b/packages/core/medusa-test-utils/src/events.ts index dca62e5898..92e5627948 100644 --- a/packages/core/medusa-test-utils/src/events.ts +++ b/packages/core/medusa-test-utils/src/events.ts @@ -6,8 +6,9 @@ export const waitSubscribersExecution = ( eventName: string, eventBus: IEventBusModuleService ) => { - const subscriberPromises: Promise[] = [] const eventEmitter: EventEmitter = (eventBus as any).eventEmitter_ + const subscriberPromises: Promise[] = [] + 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) + }) + }) }