Fix things -- namely TCP conns not getting recycled

also tried to refactor, will add some inlines w/ notes
This changed because passing around a potentially closed `response.Body` in the error as well as returning it seems a recipe for dis... errors, lots of errors..