The logic will iterate through each host and try to make one connection to each host. As soon as one connects the code delegates the remainder of the connecting to the fillPool function. If no connections were made to any of the hosts the CreateSession will return the correct error. So in the case of a list of 3 hosts at max 3 connections attempts would happen and fail if the cluster isn't reachable instead of 6 that are stuck in a loop indefinitely.