UNPKG

serverless-spy

Version:

CDK-based library for writing elegant integration tests on AWS serverless architecture and an additional web console to monitor events in real time.

37 lines (36 loc) 1.2 kB
import { timing } from "./timing"; const DEFER_EVENT_LISTENER_TIME = 1000; export const setConnectionTimeout = (request, reject, timeoutInMs = 0) => { if (!timeoutInMs) { return -1; } const registerTimeout = (offset) => { const timeoutId = timing.setTimeout(() => { request.destroy(); reject(Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), { name: "TimeoutError", })); }, timeoutInMs - offset); const doWithSocket = (socket) => { if (socket?.connecting) { socket.on("connect", () => { timing.clearTimeout(timeoutId); }); } else { timing.clearTimeout(timeoutId); } }; if (request.socket) { doWithSocket(request.socket); } else { request.on("socket", doWithSocket); } }; if (timeoutInMs < 2000) { registerTimeout(0); return 0; } return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); };