diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp
index f36781fc2e1a8e6077646455a2c079b4d0d1ffa3..a3a5350066484ccb658b512de75f30c6f54247e5 100644
--- a/src/connectionmanager.cpp
+++ b/src/connectionmanager.cpp
@@ -1291,7 +1291,7 @@ ConnectionManager::Impl::onTlsNegotiationDone(const std::shared_ptr<DeviceInfo>&
         for (const auto& cinfo: previousConnections) {
             std::lock_guard lk {cinfo->mutex_};
             if (cinfo->socket_) {
-                cinfo->socket_->sendBeacon();
+                dht::ThreadPool::io().run([s = cinfo->socket_] { s->sendBeacon(); });
             }
         }
         // Finally, launch pending callbacks