So, this method now looks a bit odd: it invokes just `obtainConnection()` independently of `this.isSingleUse()`.
I can guess that `synchronized(this)` makes sense in case of `!this.isSingleUse()`, but how about to move the `synchronized(this)` to concreate implementation of  `AbstractClientConnectionFactory#obtainConnection()` ?
From other side it looks like we should use `ReadWriteLock` around `theConnection`.
Let me know your opinion and I'll push polishing