the new downloader with coroutine