diff --git a/src/win32/ComWorker.hxx b/src/win32/ComWorker.hxx
index f7e29a395..3fa0db44a 100644
--- a/src/win32/ComWorker.hxx
+++ b/src/win32/ComWorker.hxx
@@ -65,24 +65,19 @@ public:
 	COMWorker(const COMWorker &) = delete;
 	COMWorker &operator=(const COMWorker &) = delete;
 
-	template <typename Function, typename... Args>
-	auto Async(Function &&function, Args &&...args) {
-		using R = std::invoke_result_t<std::decay_t<Function>,
-					       std::decay_t<Args>...>;
+	template<typename Function>
+	auto Async(Function &&function) {
+		using R = std::invoke_result_t<std::decay_t<Function>>;
 		auto promise = std::make_shared<Promise<R>>();
 		auto future = promise->get_future();
 		thread.Push([function = std::forward<Function>(function),
-			      args = std::make_tuple(std::forward<Args>(args)...),
 			      promise = std::move(promise)]() mutable {
 			try {
 				if constexpr (std::is_void_v<R>) {
-					std::apply(std::forward<Function>(function),
-						   std::move(args));
+					std::invoke(std::forward<Function>(function));
 					promise->set_value();
 				} else {
-					promise->set_value(std::apply(
-						std::forward<Function>(function),
-						std::move(args)));
+					promise->set_value(std::invoke(std::forward<Function>(function)));
 				}
 			} catch (...) {
 				promise->set_exception(std::current_exception());