private function download($uri)
    {
        curl_setopt($this->handle, CURLOPT_URL, $uri);
        $result = curl_exec($this->handle);

        $curl_info = curl_getinfo($this->handle);
        if ($curl_info['http_code'] >= 400) {
            throw new DownloaderException(
                sprintf(
                    "Failed to download '%s'. HTTP Code: %d",
                    $uri,
                    $curl_info['http_code']
                )
            );
        }
        return $result;
    }