public function send(Request $request)
    {
        $curl = $this->prepareRequest($request);
        
        $data = curl_exec($curl);
        if (false === $data) {
            $errorMsg = curl_error($curl);
            $errorNo  = curl_errno($curl);

            throw new \RuntimeException($errorMsg, $errorNo);
        }
        
        $data = $this->filterRawResponse($data);
        
        return $this->prepareResponse($data, curl_getinfo($curl, CURLINFO_HTTP_CODE));
    }