refactored the async DownloadResponseHandler to save files in a streaming fashion, after discovering that response.getResponseBodyAsStream() actually fills a byte buffer with the entire file contents