diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp
index 6bc9c077aee3a9603bd7cc5a5f0882378151a46f..eb18d20f995f2fa2377902bf5e430645c158773f 100644
--- a/src/connectionmanager.cpp
+++ b/src/connectionmanager.cpp
@@ -1700,8 +1700,10 @@ ConnectionManager::Impl::storeActiveIpAddress(std::function<void()>&& cb)
             if (hasIpv4 and hasIpv6)
                 break;
         }
-        if (cb)
-            cb();
+        dht::ThreadPool::io().run([cb = std::move(cb)] {
+            if (cb)
+                cb();
+        });
     });
 }