class_docstr: HTTP Response object.
  
  Attributes:
  
  * ``request``: HTTPRequest object
  
  * ``code``: numeric HTTP status code, e.g. 200 or 404
  
  * ``reason``: human-readable reason phrase describing the status code
  
  * ``headers``: `tornado.httputil.HTTPHeaders` object
  
  * ``effective_url``: final location of the resource after following any
    redirects
  
  * ``buffer``: ``cStringIO`` object for response body
  
  * ``body``: response body as bytes (created on demand from ``self.buffer``)
  
  * ``error``: Exception object, if any
  
  * ``request_time``: seconds from request start to finish. Includes all
    network operations from DNS resolution to receiving the last byte of
    data. Does not include time spent in the queue (due to the
    ``max_clients`` option). If redirects were followed, only includes
    the final request.
  
  * ``start_time``: Time at which the HTTP operation started, based on
    `time.time` (not the monotonic clock used by `.IOLoop.time`). May
    be ``None`` if the request timed out while in the queue.
  
  * ``time_info``: dictionary of diagnostic timing information from the
    request. Available data are subject to change, but currently uses timings
    available from http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html,
    plus ``queue``, which is the delay (if any) introduced by waiting for
    a slot under `AsyncHTTPClient`'s ``max_clients`` setting.
  
  .. versionadded:: 5.1
  
     Added the ``start_time`` attribute.
  
  .. versionchanged:: 5.1
  
     The ``request_time`` attribute previously included time spent in the queue
     for ``simple_httpclient``, but not in ``curl_httpclient``. Now queueing time
     is excluded in both implementations. ``request_time`` is now more accurate for
     ``curl_httpclient`` because it uses a monotonic clock when available.
class_docstr_tok: ["HTTP","Response","object",".","Attributes",":","*","``","request","``",":","HTTPRequest","object","*","``","code","``",":","numeric","HTTP","status","code",",","e.g",".","200","or","404","*","``","reason","``",":","human-readable","reason","phrase","describing","the","status","code","*","``","headers","``",":","`","tornado.httputil.HTTPHeaders","`","object","*","``","effective_url","``",":","final","location","of","the","resource","after","following","any","redirects","*","``","buffer","``",":","``","cStringIO","``","object","for","response","body","*","``","body","``",":","response","body","as","bytes","(","created","on","demand","from","``","self.buffer","``",")","*","``","error","``",":","Exception","object",",","if","any","*","``","request_time","``",":","seconds","from","request","start","to","finish",".","Includes","all","network","operations","from","DNS","resolution","to","receiving","the","last","byte","of","data",".","Does","not","include","time","spent","in","the","queue","(","due","to","the","``","max_clients","``","option",")",".","If","redirects","were","followed",",","only","includes","the","final","request",".","*","``","start_time","``",":","Time","at","which","the","HTTP","operation","started",",","based","on","`","time.time","`","(","not","the","monotonic","clock","used","by","`",".IOLoop.time","`",")",".","May","be","``","None","``","if","the","request","timed","out","while","in","the","queue",".","*","``","time_info","``",":","dictionary","of","diagnostic","timing","information","from","the","request",".","Available","data","are","subject","to","change",",","but","currently","uses","timings","available","from","http",":","\/\/curl.haxx.se\/libcurl\/c\/curl_easy_getinfo.html",",","plus","``","queue","``",",","which","is","the","delay","(","if","any",")","introduced","by","waiting","for","a","slot","under","`","AsyncHTTPClient","`","'s","``","max_clients","``","setting",".","..","versionadded",":",":","5.1","Added","the","``","start_time","``","attribute",".","..","versionchanged",":",":","5.1","The","``","request_time","``","attribute","previously","included","time","spent","in","the","queue","for","``","simple_httpclient","``",",","but","not","in","``","curl_httpclient","``",".","Now","queueing","time","is","excluded","in","both","implementations",".","``","request_time","``","is","now","more","accurate","for","``","curl_httpclient","``","because","it","uses","a","monotonic","clock","when","available","."]
docstr: If there was an error on the request, raise an `HTTPError`.
docstr_tok: ["If","there","was","an","error","on","the","request",",","raise","an","`","HTTPError","`","."]
code: def rethrow(self) -> None:
      """If there was an error on the request, raise an `HTTPError`."""
      if self.error:
          raise self.error
  
imports: import datetime
  import functools
  from io import BytesIO
  import ssl
  import time
  import weakref
  from tornado.concurrent import Future, future_set_result_unless_cancelled, future_set_exception_unless_cancelled
  from tornado.escape import utf8, native_str
  from tornado import gen, httputil
  from tornado.ioloop import IOLoop
  from tornado.util import Configurable
  from typing import Type, Any, Union, Dict, Callable, Optional, cast
label_desc: Use image node_id 3 for calling the HTTPResponse obj's underlying member method code with example usage: obj.rethrow() without return types