fillPool for the most part is called in a go routine but not ran continously. The reason it isn't on a seperate thread is I can try to add connections to the pool if it is empty when a user tries to execute a query. So by leaving it in a way that can be called in a seperate go routine or within an existing one gives the flexability to attempt to populate the pool when it is empty.