/**
* {@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;
}