'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, conn, req, host):

    reason = None
    try:
        self._start_transaction(conn, req)
        resp = conn.getresponse()
    except (socket.error, httplib.HTTPException) as e:
        resp = None
        reason = e
    except OpenSSL.SSL.ZeroReturnError as e:
        self._cm.remove_connection(conn, host, reason='ZeroReturnError')
        resp = None
        reason = e
    except Exception as e:
        msg = 'Unexpected    exception    "%s"    -    closing    %s    to    %s)'
        error((msg % (e, conn, host)))
        self._cm.remove_connection(conn, host, reason=('unexpected    %s' % e))
        raise
    if ((resp is None) or (resp.version == 9)):
        msg = 'Failed    to    re-use    %s    to    %s    due    to    exception    "%s"'
        args = (conn, host, reason)
        debug((msg % args))
        resp = None
    else:
        debug(('Re-using    %s    to    %s' % (conn, host)))
        resp._multiread = None
    return resp
