notably, this also updates client.Do() to handle non-JSON response bodies by passing an io.Writer as the final argument, v.