Add download_remote_file() which returns defer in client side