                 me.remove(connectionId: connectionId)
             }
             
-            return PooledConnection(host: host, connection: connection)
+            return self.updateSDAM(from: connection.handshakeResult).map {
+                return PooledConnection(host: host, connection: connection)
+            }
         }
         
         connection.whenFailure { error in

                } else {
                    self.handshakeResult = connectionHandshake
                }
                
                self.updateSDAM(from: connectionHandshake)
            }
            
            let connectionId = ObjectIdentifier(connection)

        var handshakes = [EventLoopFuture<Void>]()
        
        for pooledConnection in pool {
            let handshake = pooledConnection.connection.executeHandshake().then {
                return self.updateSDAM(from: pooledConnection.connection.handshakeResult)
            }
                
            handshake.whenFailure { _ in
                self.discoveredHosts.remove(pooledConnection.host)
            }
