diff --git a/src/jamidht/swarm/swarm_manager.cpp b/src/jamidht/swarm/swarm_manager.cpp
index 01291a13373eb3c84e1c3a9f4a0044ebafcbc32b..1ebb21731d96c56a74ffdd12937032667777056f 100644
--- a/src/jamidht/swarm/swarm_manager.cpp
+++ b/src/jamidht/swarm/swarm_manager.cpp
@@ -90,11 +90,10 @@ SwarmManager::addChannel(const std::shared_ptr<dhtnet::ChannelSocketInterface>&
 void
 SwarmManager::removeNode(const NodeId& nodeId)
 {
+    std::unique_lock<std::mutex> lk(mutex);
     if (isConnectedWith(nodeId)) {
-        {
-            std::lock_guard<std::mutex> lock(mutex);
-            removeNodeInternal(nodeId);
-        }
+        removeNodeInternal(nodeId);
+        lk.unlock();
         maintainBuckets();
     }
 }