diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index 60eaea9e36ce49e56f0eba216eeab9b82216c959..d52fc315760687d95314e5a538268d68c02087ca 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -2094,16 +2094,17 @@ JamiAccount::doRegister_()
                     syncCnt_.fetch_add(1);
                     gs->setOnFetched(
                         [w = weak(), conversationId, deviceId](const std::string& commit) {
-                            if (auto shared = w.lock()) {
-                                shared->convModule()->setFetched(conversationId,
-                                                                 deviceId.toString(),
-                                                                 commit);
-                                shared->syncCnt_.fetch_sub(1);
-                                if (shared->syncCnt_.load() == 0) {
-                                    emitSignal<libjami::ConversationSignal::ConversationCloned>(
-                                        shared->getAccountID().c_str());
+                            dht::ThreadPool::computation().run([w, conversationId, deviceId, commit]() {
+                                if (auto shared = w.lock()) {
+                                    shared->convModule()->setFetched(conversationId,
+                                                                    deviceId.toString(),
+                                                                    commit);
+                                    if (shared->syncCnt_.fetch_sub(1) == 1) {
+                                        emitSignal<libjami::ConversationSignal::ConversationCloned>(
+                                            shared->getAccountID().c_str());
+                                    }
                                 }
-                            }
+                            });
                         });
                     const dht::Value::Id serverId = ValueIdDist()(rand);
                     {