No intended. Just like you said, a fully occupied connection will be add to available pool. But won't assign more requests to it for another change made. A check in selectConnection() method will prevent it from taking more requests, actually the connection is removed from pool there.

You thought make more sense. A fully occupied connection shouldn't be returned to poll at all.  I will change the logic a little bit.