async fn perform_download( client: &Client, paths: Box<[PathBuf]>, to: PathBuf, zip_output: Option<PathBuf>, progress_tx: &UnboundedSender<()>, ) -> Result<(), Error>