Goroutine to check for down servers and connect back to them

1. goroutine to check for down servers and connect back to them
2. make connections on demand rather than initialising with a big pool