code: function CommandProcessor(conn) {
  	events.EventEmitter.call(this);
  
  	this.conn = conn;
  
  	this.connected_at = +new Date();
  	this.last_data_at = 0;
  	this.last_ping_at = 0;
  
  	p.data_timeout = -1; // disabled
  	p.data_timeout_TID = null;
  
  	p.ping_timeout = -1; // disabled
  	p.ping_timeout_TID = null;
  
  	this._request_id = 0;
  	this._requests_in_flight = {};
  
  	this.last_line   = '';
  
  	// handling disconnection can only be done once
  	var _handle_disconnection = _.once(this._handle_disconnection.bind(this));
  
  	conn.on('data',  this.process_data.bind(this));
  	conn.on('error', _handle_disconnection);
  	conn.on('end',   _handle_disconnection); // Do we really need this?
  	conn.on('close', _handle_disconnection);
  
  	// bind some methods to current instance for easy reuse
  	this._emit_data_timeout = this._emit_data_timeout .bind(this);
  	this._emit_ping_timeout = this._emit_ping_timeout .bind(this);
  	this.set_timeouts();
  }
docs: var RESPONSE_TIMEOUT = 500; // 500ms is already *very* long for a UDS local system