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
  
  * 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.
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","*","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","."]
code: def body(self):
      if self.buffer is None:
          return None
      elif self._body is None:
          self._body = self.buffer.getvalue()
  
      return self._body
  
imports: from __future__ import absolute_import, division, print_function
  import functools
  import time
  import weakref
  from tornado.concurrent import TracebackFuture
  from tornado.escape import utf8, native_str
  from tornado import httputil, stack_context
  from tornado.ioloop import IOLoop
  from tornado.util import Configurable
label_desc: Use image node_id 2 for calling the HTTPResponse obj's underlying member method code with example usage: obj.body() and returns: self, None