Its similiar but different because a host can be accessible after the CreateSession. CreateSession tries to form atleast 1 connection. Once it does it hands the rest of the connecting work to fillPool. fillPool does all the connecting there after this way the main logic is in one spot and is controlled in the sense that we don't have infinte loops of go rountines constantly reconnecting. Again I defined the logic in the comments so it is more understandable.