Prevent premature cancellation of the HTTP request context
The Context in the http.Request is bound to the one we give it when calling balancedBackend.do(), so we were accessing it out of scope when calling the final json.Decode on the response body. This was not a problem for most *small* requests, as the response Body already contains all the data due to having read it along with the headers. However, larger response bodies would cause json.Decode to call a Read with what at that point is a canceled Context, so the Call function would return a mysterious "context canceled" error. (Note that this change introduces a minor, probably less annoying, issue, where we can't reset "resp" between successive calls so we may be invoking json.Decode on a non-pristine object if the first call fails in some circumstances).
Showing with 21 additions and 20 deletions