diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp
index 266fa080e2a9f361017e3563bf051001336d6891..8a748ac0dd96ee2543b5d72fb625146e26b82dc5 100644
--- a/src/connectionmanager.cpp
+++ b/src/connectionmanager.cpp
@@ -1605,6 +1605,10 @@ ConnectionManager::Impl::retryOnError(const std::shared_ptr<DeviceInfo>& deviceI
         return;
     if (auto i = deviceInfo->getConnectedInfo()) {
         auto ops = deviceInfo->requestPendingOps();
+        std::unique_lock clk(i->mutex_);
+        for (const auto& [id, name]: ops)
+            i->pendingCbs_.emplace(id);
+        clk.unlock();
         lk.unlock();
         for (const auto& [id, name]: ops)
             sendChannelRequest(deviceInfo, i, i->socket_, name, id);