Raise a wrapped network error if not threaded
Where possible, don't rescue Exception

This allows single-threaded applications to set a Timeout and be
assured that no one will intercept it.