client emits more predictable 'end' event

This commit is contained in:
Andrew Kelley 2013-02-03 15:36:55 -05:00
parent bb76dc8b0a
commit 1a434b9743

View file

@ -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) {