'Read the response.
This method does not have the same behavior as
http_client.HTTPResponse.read.  Instead, if this method is called with
no ``amt`` arg, then the response body will be cached.  Subsequent
calls to ``read()`` with no args **will return the cached response**.'

def read(self, amt=None):

    if (amt is None):
        if (not self._cached_response):
            self._cached_response = http_client.HTTPResponse.read(self)
        return self._cached_response
    else:
        return http_client.HTTPResponse.read(self, amt)
