Pool fix

1. Previous pool would hold all the connections(size of 'poolSize') even if just one connection can process all the requests. So this PR would create clients as much as necessary and close those when it exceeds the poolSize.  
2. Broken connections would be returned to the pool and no other connections are able to be created in previous code. This PR fixes this.