diff --git a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js index 500bbe2c2..c8b94eb9a 100644 --- a/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js +++ b/packages/node_modules/@node-red/nodes/core/network/31-tcpin.js @@ -190,11 +190,23 @@ module.exports = function(RED) { setupTcpClient(); this.on('close', function(done) { - node.doneClose = done; + var doneCalled = false; + var callDone = function() { + if (!doneCalled) { + doneCalled = true; + done(); + } + }; + node.doneClose = callDone; this.closing = true; - if (client) { client.destroy(); } clearTimeout(reconnectTimeout); - if (!node.connected) { done(); } + if (client) { + client.destroy(); + // If not connected, close event may not fire, so call done as safety net + if (!node.connected) { callDone(); } + } else { + callDone(); + } }); } else {