code: function Client(options, onConnect) {
    events.EventEmitter.call(this);
    if (!options) { options = {}; }
    options.host = options.host ? options.host : '127.0.0.1';
    options.port = options.port ? Number(options.port) : 5555;
  
    if (onConnect) { this.once('connect', onConnect); }
  
    var self = this;
  
    this.tcp = new Socket.tcpSocket(options);
    this.udp = new Socket.udpSocket(options);
    this.tcp.promiseResolutionEvent = 'data';
    this.udp.promiseResolutionEvent = 'sent';
    this.returnPromise = options.returnPromise;
  
    // monitor both close events, and proxy
    // it as a single disconnect event.
    var _closeAcks = 0;
    var monitorClose = function() {
      ++_closeAcks;
      return function() {
        if (--_closeAcks === 0) { self.emit('disconnect'); }
      };
    };
    this.tcp.socket.on('close', monitorClose());
    this.udp.socket.on('close', monitorClose());
  
    // proxy the TCP connect event.
    this.tcp.socket.on('connect', function() { self.emit('connect'); });
  
    // proxy the UDP sent event.
    this.udp.socket.on('sent', function() { self.emit('sent'); });
  
    // proxy errors from TCP and UDP
    this.tcp.socket.on('error', function(error) { self.emit('error', error); });
    this.udp.socket.on('error', function(error) { self.emit('error', error); });
  
    this.tcp.onMessage(function(message) {
      self.emit('data', Serializer.deserializeMessage(message));
    });
  
  }
docs: /* sets up a client connection to a Riemann server.
  options supports the following:
  - host (eg; my.riemannserver.biz)
  - port (eg; 5555 -- default)