Async callback

I ran into the issue of wanting to run a task after the download was complete, but wasn't able to because there was no callback to know when it was complete. Please feel free to scrutinize any of the code, or implement it yourself. I personally don't like adding more than 3 parameters to a function, but didn't see another quick way around it. I'm open to suggestions.