This repository was archived by the owner on Jan 22, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -301,6 +301,21 @@ describe("eachMessage", () => {
301
301
} ) ;
302
302
expect ( mockEventHandler ) . toBeCalledTimes ( 1 ) ;
303
303
} ) ;
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
+ } ) ;
304
319
it ( "handles weird error scenarios appropriately" , async ( ) => {
305
320
expect . assertions ( 3 ) ;
306
321
const mock = jest
Original file line number Diff line number Diff line change @@ -274,9 +274,9 @@ export default class AsyncRetryHelper {
274
274
public on (
275
275
event : AsyncRetryEvent | `${AsyncRetryEvent } `,
276
276
listener : ( payload : EventPayload ) => void
277
- ) : this {
277
+ ) : ( ) => void {
278
278
this . eventEmitter . on ( event , listener ) ;
279
- return this ;
279
+ return ( ) => { this . eventEmitter . removeListener ( event , listener ) } ;
280
280
}
281
281
282
282
/**
You can’t perform that action at this time.
0 commit comments