Return a failed future instead of throwing exceptions on connection failure.

This makes life easier for users, who can assume that 'go' will not throw
exceptions in situations where the internal state of the http client is okay.