Raise Unknown Error on 0 response

We've seen this behavior before, but EM returns a response of 0 when a request times out for unknown reasons: https://github.com/igrigorik/em-http-request/issues/76 - uber-s3 interprets anything below a 400 as successful, so there is no retry. 

This change will raise an Unknown Error, which will cause the request to retry 4 times. There is still a chance some requests will fail, but we can work out a strategy for that going forward, or ideally get off EM altogether.