Essentially, we need to address this TODO: https://github.com/mongodb/mongo/blob/744678da09dcab9885ae6af3e368864387fbfb82/src/mongo/executor/connection_pool.cpp#L1013
Currently, when a connection is checked out from the pool and is returned with failure indicated, we discard that individual connection. However, we don't examine the failure in any way, and don't drop other connections to the same host (and bump the SpecificPool generation appropriately) if the failure is a Network error or other error that leads us to believe that the host is down and current-generation connections are likely to be unhealthy.
This is distinct from the behavior in the case where we observe a network-error on a connection during the refresh process; in this case, we treat the host as down, bump the generation of the SpecificPool to that host, and drop other connections to that host. The cases of a network error on a returned connection vs. one that has finished refreshing are very similar and should probably be treated in the same manner.