Skip to content

Commit c5abb54

Browse files
committed
:bug fix(teardown-leaks): cleanup emitter handlers and set http timeouts
1 parent e976122 commit c5abb54

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

packages/backend/src/__tests__/drivers/base.driver.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ export class BaseDriver {
2323
return `session=${JSON.stringify(session)}`;
2424
}
2525

26+
constructor() {
27+
this.http.timeout = 3000;
28+
this.http.keepAliveTimeout = 4000;
29+
}
30+
2631
/**
2732
* listen
2833
*

packages/backend/src/common/helpers/common.util.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,13 @@ export async function waitUntilEvent<
3333
Promise.resolve(args as unknown as Result),
3434
): Promise<Result> {
3535
return new Promise((resolve, reject) => {
36+
const eventEmitter = emitter as EventEmitter;
37+
3638
const timeout = setTimeout(() => {
3739
clearTimeout(timeout);
40+
41+
eventEmitter.removeListener(event, listener);
42+
3843
reject(
3944
error(
4045
GenericError.OperationTimeout,
@@ -43,11 +48,16 @@ export async function waitUntilEvent<
4348
);
4449
}, timeoutMs);
4550

46-
(emitter as EventEmitter).once(event, (...payload: Payload) => {
51+
const listener = (...payload: Payload) => {
4752
afterEvent(...payload).then(resolve);
4853
clearTimeout(timeout);
49-
});
54+
};
55+
56+
eventEmitter.once(event, listener);
5057

51-
beforeEvent().catch(reject);
58+
beforeEvent().catch((error) => {
59+
eventEmitter.removeListener(event, listener);
60+
reject(error);
61+
});
5262
});
5363
}

0 commit comments

Comments
 (0)