diff --git a/session.go b/session.go
index <HASH>..<HASH> 100644
--- a/session.go
+++ b/session.go
@@ -227,18 +227,26 @@ func (s *Session) init() error {
 	}
 
 	hosts = hosts[:0]
+
+	var wg sync.WaitGroup
 	for _, host := range hostMap {
-		host = s.ring.addOrUpdate(host)
+		host := s.ring.addOrUpdate(host)
 		if s.cfg.filterHost(host) {
 			continue
 		}
 
 		host.setState(NodeUp)
-		s.pool.addHost(host)
-
 		hosts = append(hosts, host)
+
+		wg.Add(1)
+		go func() {
+			defer wg.Done()
+			s.pool.addHost(host)
+		}()
 	}
 
+	wg.Wait()
+
 	type bulkAddHosts interface {
 		AddHosts([]*HostInfo)
 	}
Init host pools in parallel. (#<I>)

Creating a session can take a long time if your cluster is big and

there's latency between you and the cluster. We are seeing it take

~<I>s to create a session to a <I> node cluster with ~<I>ms of latency.



This is somewhat related to #<I> and #<I>, but this change tries to

do the simplest thing to speed up initial connection without changing

any behavior.