Hice esta función de promesa que hace una conexión a un host específico; sin embargo, necesito tener la dirección remota para estar presente en los registros cuando hay un tiempo de espera o un error. Parece que esto se elimina del objeto. Este es mi código:
const makeTCPConnection = async (host, portNumber) => new Promise((resolve, reject) => { const client = new Socket(); let remoteAddress; let localAddress; const timeout = 2; client.setTimeout(timeout); client.connect(portNumber, host, () => { console.log("TCP connection established", { host, portNumber, localAddress, remoteAddress }); }); client.on("connect", () => { localAddress = client.localAddress; remoteAddress = client.remoteAddress; // client.destroy(); resolve(); }); client.on("close", () => { client.destroy(); resolve(); }); client.on("drain", () => { client.destroy(); resolve(); }); client.on("end", () => { client.destroy(); resolve(); }); client.on("timeout", (error) => { console.error("TCP client timeout after 1s", { error, host, portNumber, localAddress, remoteAddress }); // client.destroy(); reject(error); }); client.on("error", (error) => { console.error("TCP client connection error", { error, host, portNumber, localAddress, remoteAddress }); client.destroy(); reject(error); }); });He estado probando esto con el tiempo de espera principalmente, traté de eliminar el evento client.destroy() en el tiempo de espera, pero luego obtengo como 4 registros antes de obtener el que tiene una dirección remota. Lo mismo está sucediendo con localAddress.
¿Alguien tiene alguna idea?