private function request(string $path, string $method, $body = null): HttpResponse
    {
        $ch = curl_init();

        $this->processUrl($path, $ch);

        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);

        $this->processBody($ch, $body); // Do body first as this might add additional headers
        $this->processHeaders($ch);
        $this->processCookies($ch);

        return $this->send($ch);
    }