overhaul of the response writing flow, depends on rust-http pull 55 landing