When unexpected response sent by server, make the request and response available

Fixes these problems:
(a) The request and response hang around (preventing process exit) until timeout
    - call err.request.abort to stop this
(b) It's very useful to be able to read the response! There may be extra error
    information returned by the server that can't be represented by the status
    code alone (e.g. some JSON data describing the error).