public function post(
            $body,
            int $timeout = 30,
            $version = HttpVersion::HTTP_1_1
    ): HttpResponse {
        if (is_array($body)) {
            $body = $this->transformPostValues($body);
            $this->headers->put('Content-Type', 'application/x-www-form-urlencoded');
        }

        $this->headers->put('Content-Length', strlen($body));
        $socket = $this->httpUri->openSocket($timeout);
        $this->processHeader($socket, Http::POST, $version);
        $socket->write($body);
        return HttpResponse::create($socket);
    }