Fix and add a bit of error handling

The two `done.reject`s weren't bound to `done` and were silently eating errors.
The downloader now handles http errors.