Skip to content
This repository was archived by the owner on Jan 22, 2025. It is now read-only.

Commit 6037dd3

Browse files
committed
fix: follow kafkajs convention for event listener removal
1 parent a088bac commit 6037dd3

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/index.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,21 @@ describe("eachMessage", () => {
301301
});
302302
expect(mockEventHandler).toBeCalledTimes(1);
303303
});
304+
it('allows event listeners to be removed easily', async () => {
305+
expect.assertions(3);
306+
const mock = jest.fn<AsyncCallback>().mockRejectedValue(new Error("test"));
307+
const helper = subject();
308+
const mockEventHandler = jest.fn();
309+
const remove = helper.on("retry", mockEventHandler);
310+
const wrapped = helper.eachMessage(mock);
311+
const payload = messagePayload();
312+
await wrapped(payload);
313+
expect(mock).toBeCalledTimes(1);
314+
expect(mockEventHandler).toBeCalledTimes(1);
315+
remove();
316+
await wrapped(payload);
317+
expect(mockEventHandler).toBeCalledTimes(1);
318+
});
304319
it("handles weird error scenarios appropriately", async () => {
305320
expect.assertions(3);
306321
const mock = jest

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,9 +274,9 @@ export default class AsyncRetryHelper {
274274
public on(
275275
event: AsyncRetryEvent | `${AsyncRetryEvent}`,
276276
listener: (payload: EventPayload) => void
277-
): this {
277+
): () => void {
278278
this.eventEmitter.on(event, listener);
279-
return this;
279+
return () => { this.eventEmitter.removeListener(event, listener) };
280280
}
281281

282282
/**

0 commit comments

Comments
 (0)