if we have an error reading the body of an API error response, still
return an ErrorResposne with the original response struct. Simply
returning a string stating that we couldn't read the response body
doesn't give the caller anything actionable to work with or attempt to
process.
internally, http.Error uses fmt.Fprintln() which will append a newline
to what should be an empty response body. In one of my previous tests,
this was causing spurious errors. I've since rewritten that test, but
still best to avoid it here.