Downloader is now a component to allow mocking in tests
Simplify Retry mechanics now we're back to compile time weaving