<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def send(self):
 """Issue the request. Uses httplib2.Http support for handling redirects. Returns an httplib2.Response, which may be augmented by the proc_response() method. Note that the default implementation of proc_response() causes an appropriate exception to be raised if the response code is >= 400. """


        # Pre-process the request
        try:
            self.procstack.proc_request(self)
        except exc.ShortCircuit, e:
            self._debug("Request pre-processing short-circuited")

            # Short-circuited; we have an (already processed) response
            return e.response

        self._debug("Sending %r request to %r (body %r, headers %r)",
                    self.method, self.url, self.body, self.headers)

        # Issue the request
        (resp, content) = self.client.request(self.url, self.method,
                                              self.body, self.headers,
                                              self.max_redirects)

        # Save the body in the response
        resp.body = content

        # Do any processing on the response that's desired
        try:
            self.proc_response(resp)
        except:
            # Process the exception
            result = self.procstack.proc_exception(*sys.exc_info())
            if not result:
                # Not handled, re-raise it
                raise
            else:
                # Handled and we have a fully post-processed response
                return result

        # Return the response, post-processing it
        return self.procstack.proc_response(resp)