- add timeout to header retrieval - add timeout to each chunk download through stream - if any timeout or any other exception occurs, delete the destination file (so that we don't keep the corrupt file) - consider adding configurable retries