'Overriding to remove the timeout kwarg which was being used below to
override my own HTTPRequest.timeout attribute.'

def open(self, full_url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):

    if isinstance(full_url, basestring):
        req = Request(full_url, data)
    else:
        req = full_url
        if (data is not None):
            req.add_data(data)
    protocol = req.get_type()
    meth_name = (protocol + '_request')
    for processor in self.process_request.get(protocol, []):
        meth = getattr(processor, meth_name)
        req = meth(req)
    response = self._open(req, data)
    meth_name = (protocol + '_response')
    for processor in self.process_response.get(protocol, []):
        meth = getattr(processor, meth_name)
        response = meth(req, response)
    return response
