From 1a434b9743d61e6b4bfaa2192a527597d4028159 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sun, 3 Feb 2013 15:36:55 -0500 Subject: [PATCH] client emits more predictable 'end' event --- lib/client.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/client.js b/lib/client.js index afa8ed0..d3a2064 100644 --- a/lib/client.js +++ b/lib/client.js @@ -41,17 +41,27 @@ Client.prototype.setSocket = function(socket) { } }); - self.socket.on('error', function(err) { - self.emit('error', err); - }); - - self.socket.on('close', function() { - self.emit('end', self._endReason); - }); - self.socket.on('connect', function() { self.emit('connect'); }); + + self.socket.on('error', onError); + self.socket.on('close', endSocket); + self.socket.on('end', endSocket); + self.socket.on('timeout', endSocket); + + function onError(err) { + self.emit('error', err); + endSocket(); + } + + function endSocket() { + self.socket.removeListener('error', onError); + self.socket.removeListener('close', endSocket); + self.socket.removeListener('end', endSocket); + self.socket.removeListener('timeout', endSocket); + self.emit('end', self._endReason); + } }; Client.prototype.connect = function(port, host) {