diff --git a/lib/client/client.js b/lib/client/client.js index c26ec0e9..e336f60f 100644 --- a/lib/client/client.js +++ b/lib/client/client.js @@ -1111,6 +1111,12 @@ Client.prototype.connect = function connect() { socket.once('error', bail); socket.once('end', bail); socket.once('timeout', bail); + socket.once('cleanupSetupListeners', function onCleanup() { + socket.removeListener('error', bail) + .removeListener('close', bail) + .removeListener('end', bail) + .removeListener('timeout', bail); + }); self._socket = socket; self._tracker = tracker; @@ -1147,10 +1153,8 @@ Client.prototype.connect = function connect() { // Wire up "official" event handlers after successful connect/setup function postSetup() { - socket.removeAllListeners('error') - .removeAllListeners('close') - .removeAllListeners('end') - .removeAllListeners('timeout'); + // cleanup the listeners we attached in setup phrase. + socket.emit('cleanupSetupListeners'); // Work around lack of close event on tls.socket in node < 0.11 ((socket.socket) ? socket.socket : socket).once('close',