'start the transaction with a re-used connection
return a response object (r) upon success or None on failure.
This DOES not close or remove bad connections in cases where
it returns.  However, if an unexpected exception occurs, it
will close and remove the connection before re-raising.'

def _reuse_connection(self, h, req, host):

    try:
        self._start_transaction(h, req)
        r = h.getresponse()
    except (socket.error, httplib.HTTPException):
        r = None
    except:
        if DEBUG:
            DEBUG.error(('unexpected    exception    -    closing    ' + 'connection    to    %s    (%d)'), host, id(h))
        self._cm.remove(h)
        h.close()
        raise
    if ((r is None) or (r.version == 9)):
        if DEBUG:
            DEBUG.info('failed    to    re-use    connection    to    %s    (%d)', host, id(h))
        r = None
    elif DEBUG:
        DEBUG.info('re-using    connection    to    %s    (%d)', host, id(h))
    return r
