std::forward in throw_if
implement connection timeouts for http, and ensure sockets hit with timeout are discarded
try to test separate handling for connection refused, but it's not taking