THTTPClientを使って非同期HTTPリクエストを試してみました。
TNetHTTPClientと言うコンポーネントもありますが、TNetHTTPClient classにはTHTTPClientが 内包されています。

コンソール アプリケーションを新規プロジェクトC++Builder(Win64)で作成しTHTTPClientBeginGet()を試したコードです。

net_console_1.cpp
struct _net_request:public TObject
{
    using inherited = TObject;
    std::mutex m_;
    bool f_wait{false};
    THTTPClient* f_netc_{THTTPClient::Create()};
    String f_temp;
    _net_request():inherited()
    {
        f_netc_->OnReceiveData = receive_event;
    }
    void __fastcall receive_event(TObject * const Sender, __int64 AContentLength, __int64 AReadCount, bool &Abort)
    {
        if (Abort == false)
        {
            std::wcout << L"AReadCount=" << AReadCount << std::endl;
        }

    }
    void set_wait(const bool value_)
    {
        std::lock_guard<std::mutex> lk_(m_);
        f_wait = value_;
    }
    bool get_wait()
    {
        std::lock_guard<std::mutex> lk_(m_);
        return f_wait;
    }
    __fastcall ~_net_request(void)
    {
        delete f_netc_;
    }
};

 int _tmain(int argc, _TCHAR* argv[])
{
    String url_         = argv[1];
    String fname_       = argv[2];
    String path_name_   = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetSharedDownloadsPath(), fname_);
    std::unique_ptr<_net_request> req_ = std::make_unique<_net_request>();
    //
    int lengs_ = req_->f_netc_->Head(url_)->ContentLength;
    std::cout << "ContentLength" << lengs_ << std::endl;

    std::unique_ptr<TFileStream> down_file_ = std::make_unique<TFileStream>(path_name_, fmCreate);
    down_file_->Position = 0;
    TDateTime tstart_ = Now();
    _di_IAsyncResult res_= req_->f_netc_->BeginGet([&req_, &tstart_](const System::Types::_di_IAsyncResult AsyncResult)
        {
            req_->set_wait(true);
            TDateTime tend_ = Now() - tstart_;
            std::wcout <<  FormatDateTime("hh:nn:ss.zzz",tend_).w_str() << L" End Download." << std::endl;
        }, url_, down_file_.get());

    if (res_ != nullptr)
    {
        // Wait until BeginGet() is over.
        while (! req_->get_wait() )
        {
            std::this_thread::sleep_for(std::chrono::seconds(2));
        }
    }
    return 0;
}

THTTPClient Delphiを利用した方法

下記のURLに詳しく書かれています。
http://qiita.com/pik/items/998547937c7d05d34977

参考URL

https://community.embarcadero.com/blogs/entry/thttpclient-http-japan
https://github.com/mojeld/THTTPClient_Console