.. change::
    :tags: bug, engine
    :tickets: 8974
    :versions: 2.0.0rc1

    Fixed a long-standing race condition in the connection pool which could
    occur under eventlet/gevent monkeypatching schemes in conjunction with the
    use of eventlet/gevent ``Timeout`` conditions, where a connection pool
    checkout that's interrupted due to the timeout would fail to clean up the
    failed state, causing the underlying connection record and sometimes the
    database connection itself to "leak", leaving the pool in an invalid state
    with unreachable entries. This issue was first identified and fixed in
    SQLAlchemy 1.2 for :ticket:`4225`, however the failure modes detected in
    that fix failed to accommodate for ``BaseException``, rather than
    ``Exception``, which prevented eventlet/gevent ``Timeout`` from being
    caught. In addition, a block within initial pool connect has also been
    identified and hardened with a ``BaseException`` -> "clean failed connect"
    block to accommodate for the same condition in this location.
    Big thanks to Github user @niklaus for their tenacious efforts in
    identifying and describing this intricate issue.
