anchor.diff:      }
     }
   
  -  void _checkIdleTimeout(PooledConnectionImpl pconn) {
  +  void _checkIdleTimeout(PooledConnectionImpl pconn, int i) {
       if (pconn._state == available
       && _isExpired(pconn._released ?? pconn._established, settings.idleTimeout)) {
  -      _destroyConnection(pconn);
  -    }
  -  }
  -  
  -  void _checkIfLeaked(PooledConnectionImpl pconn) {
  +      _destroyConnection(pconn, i);
  +    }
  +  }
  +  
  +  void _checkIfLeaked(PooledConnectionImpl pconn, int i) {
       if (!pconn._isLeaked
           && pconn._state != available
           && pconn._obtained != null
  
positive.code:   bool _isExpired(DateTime time, Duration timeout) 
      => new DateTime.now().difference(time) > timeout;
    
    void _destroyConnection(PooledConnectionImpl pconn) {
      if (pconn._connection != null) pconn._connection.close();
      pconn._state = connClosed;
  
      //revere order since we clean up from the end
      for (int i = _connections.length; --i >= 0;)
        if (pconn == _connections[i]) {
          _connections.removeAt(i);
          break;
        }
    }
    
    Future stop() {
  
negative.code: 
      var stopwatch = new Stopwatch()..start();
      while (_connections.isNotEmpty) {
        _forEachConnection((pconn, i) {
          if (pconn._state == available)
            _destroyConnection(pconn, i);
        });
  
        await new Future.delayed(new Duration(milliseconds: 100), () => null);
  