Retry execution using PooledConnection only a finite number of times

Currently, there is a possibility of an infinite call to `PooledConnection.execute` function of the driver for certain kinds of errors like query timing out. It will keep on retrying till it exhausts all the connections in the pool, finally striking `All connections are unhealthy` error. This PR will execute the query only a fixed number of times before passing an error in the callback.