public function createClient(array $options = array()) { $options = array_merge($this->defaultOptions, $options); $conn = $this->createConnection($options); $parser = new Parser(); $input = new InputStream($parser); $conn->pipe($input); $output = new OutputStream($this->loop); $output->pipe($conn); $conn->on('error', function ($e) use($input) { $input->emit('error', array($e)); }); return new Client($input, $output, $options); }