         }
         
         // Call all completions so all coordinators can be deallocated
-        completions.forEach { $0.value() }
+        for presentable in completions.keys {
+            runCompletion(for: presentable)
+        }
         
         if let popCompletion = popCompletion {
             completions[controller] = popCompletion

                return
        }
        
        runCompletion(for: poppedViewController)
    }
}

    // MARK: - Private
    
    private func runCompletion(for controller: UIViewController) {
        guard let completion = completions[controller] else {
            return
        }
        completion()
        completions.removeValue(forKey: controller)
    }
