index.js
function Client (options) {
    var self = this;
    options = options || {};

    this.mid = 0;
    this.callbacks = {};

    this.socket = new net.Socket(options);
    replier._migrate_events(['connect', 'error', 'end', 'timeout', 'close', 'drain'], this.socket, this);

    this.socket.on('data', function (data) {
        dealStream(data, function(msg){
            self.emit('data', msg);
            self._dealServerData(msg);
        });
    });
}
function Client (options) {
    var self = this;
    options = options || {};

    this.mid = 0;
    this.callbacks = {};

    this.socket = new net.Socket(options);
    replier._migrate_events(['connect', 'error', 'end', 'timeout', 'close', 'drain'], this.socket, this);

    this.socket.on('data', function (data) {
        dealStream(data, function(msg){
            self.emit('data', msg);
            self._dealServerData(msg);
        });
    });
}
- retry {number} - 0: no retries, default - >0: max retry times - -1: no limit - retry_timeout: {number} default to `100` ms