docs: def _makeResponse(self, urllib2_response):
          '''
          Construct an HTTPResponse from the the urllib response. Attempt to
          decode the response body from bytes to str if the necessary information
          is available.
          '''
          resp = HTTPResponse()
          resp.body = urllib2_response.read(MAX_RESPONSE_KB * 1024)
          resp.final_url = urllib2_response.geturl()
          resp.headers = self._lowerCaseKeys(
              dict(list(urllib2_response.info().items())))
  
          if hasattr(urllib2_response, 'code'):
              resp.status = urllib2_response.code
          else:
              resp.status = 200
  
          _, extra_dict = self._parseHeaderValue(
              resp.headers.get("content-type", ""))
          # Try to decode the response body to a string, if there's a
          # charset known; fall back to ISO-8859-1 otherwise, since that's
          # what's suggested in HTTP/1.1
          charset = extra_dict.get('charset', 'latin1')
          try:
              resp.body = resp.body.decode(charset)
          except Exception:
              pass
  
          return resp