'Supply a connection, newly created or retrieved from the pool, to be
used for one HTTP request.
The connection will remain out of the pool (not available to be
returned from future calls to this method) until one HTTP request has
been completed over it.
Afterwards, if the connection is still open, it will automatically be
added to the pool.
@param key: A unique key identifying connections that can be used
interchangeably.
@param endpoint: An endpoint that can be used to open a new connection
if no cached connection is available.
@return: A C{Deferred} that will fire with a L{HTTP11ClientProtocol}
(or a wrapper) that can be used to send a single HTTP request.'

def getConnection(self, key, endpoint):

    connections = self._connections.get(key)
    while connections:
        connection = connections.pop(0)
        self._timeouts[connection].cancel()
        del self._timeouts[connection]
        if (connection.state == 'QUIESCENT'):
            if self.retryAutomatically:
                newConnection = (lambda : self._newConnection(key, endpoint))
                connection = _RetryingHTTP11ClientProtocol(connection, newConnection)
            return defer.succeed(connection)
    return self._newConnection(key, endpoint)
