The ConnectionPool of Gremlin.Net checks whether a connection is actually still open before it returns that connection to execute a request (in SelectLeastUsedConnection):
However, the connection stays in the pool as DefinitelyDestroyConnection only disposes the connection:
This is problematic as it can potentially fill the pool with unusable connections. Even worse, SelectLeastUsedConnection will likely return such an unusable connection since it only checks for the number of in-flight requests and a disposed connection won't have any in-flight requests. This means that GetConnectionFromPool will try to get a connection until another still valid connection also has no in-flight requests.
Note: This all can only happen when a connection was closed while sitting idle in the pool which shouldn't usually happen due to the heartbeat. If a connection problem occurs during the execution of a request, then all connections will be closed and new ones will be created.