     }
     private var timeoutHosts = Set<ConnectionSettings.Host>()
     
-    private func updateSDAM(from handshake: ConnectionHandshakeReply) {
-        var hosts = handshake.hosts ?? []
-        hosts += handshake.passives ?? []
+    private func updateSDAM(from handshake: ConnectionHandshakeReply?) -> EventLoopFuture<Void> {
+        var hosts = handshake?.hosts ?? []
+        hosts += handshake?.passives ?? []
         
         for host in hosts {
             do {

                me.remove(connectionId: connectionId)
            }
            
            return PooledConnection(host: host, connection: connection)
        }
        
        connection.whenFailure { error in

        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)
            }
