22 lines
632 B
JavaScript
22 lines
632 B
JavaScript
|
export const setConnectionTimeout = (request, reject, timeoutInMs = 0) => {
|
||
|
if (!timeoutInMs) {
|
||
|
return;
|
||
|
}
|
||
|
const timeoutId = setTimeout(() => {
|
||
|
request.destroy();
|
||
|
reject(Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), {
|
||
|
name: "TimeoutError",
|
||
|
}));
|
||
|
}, timeoutInMs);
|
||
|
request.on("socket", (socket) => {
|
||
|
if (socket.connecting) {
|
||
|
socket.on("connect", () => {
|
||
|
clearTimeout(timeoutId);
|
||
|
});
|
||
|
}
|
||
|
else {
|
||
|
clearTimeout(timeoutId);
|
||
|
}
|
||
|
});
|
||
|
};
|