Move pool into internals

This will allow a failed connection attempt to trigger a new attempt on
its own. It also avoids a second mutex