protected function curlOptions($ch)
    {
        $method = $this->method;

        if ($method === Method::HEAD) {
            curl_setopt($ch, CURLOPT_NOBODY, true);
        }

        // Default Options
        curl_setopt_array($ch,
            [
                CURLOPT_URL             => $this->uri->build(),
                CURLOPT_CUSTOMREQUEST   => $method,
                CURLOPT_AUTOREFERER     => true,
                CURLOPT_RETURNTRANSFER  => true,
                CURLOPT_FOLLOWLOCATION  => true,
                CURLOPT_MAXREDIRS       => 20,
                CURLOPT_HEADER          => $this->fullResponse,
                CURLOPT_PROTOCOLS       => CURLPROTO_HTTP | CURLPROTO_HTTPS,
                CURLOPT_REDIR_PROTOCOLS => CURLPROTO_HTTP | CURLPROTO_HTTPS,
                CURLOPT_HEADERFUNCTION  => [$this, 'curlHeaderFunction'],
            ]);

        curl_setopt_array($ch, $this->options);
    }