The ConnectionPool currently checks whether the pool is empty and then tries to retrieve an available connection if it is not empty. If this fails, then a ConnectionPoolBusyException is thrown with this text:
All 4 connections have reached their MaxInProcessPerConnection limit of 32. Consider increasing either the PoolSize or the MaxInProcessPerConnection limit.
However, this exception can also be thrown if all connections in the pool were already closed and were therefore removed from the pool. The exception message doesn't make sense in this case.
A different exception should be thrown if the pool only contained already closed connections as it's important for users to know whether they actually executed too many requests in parallel or whether there is a connection problem.