/** * {@inheritdoc} */ public function writeRequest(Socket $socket, Request $request, float $timeout = 0) : \Generator { $written = (yield from $socket->write($this->encoder->encodeRequest($request))); $stream = $request->getBody(); if ($stream->isReadable()) { $written += (yield from Stream\pipe($stream, $socket, false, 0, null, $timeout)); } return $written; }