diff --git a/src/traft/node.rs b/src/traft/node.rs
index 440553d2adc7280641a9bc999224f9897b7babeb..0da99a1282f2619df24bf7f5f14b6a463ef6f5f4 100644
--- a/src/traft/node.rs
+++ b/src/traft/node.rs
@@ -1239,13 +1239,8 @@ impl NodeImpl {
 
     fn wait_lsn(&mut self) -> traft::Result<()> {
         assert!(self.raw_node.raft.state != RaftStateRole::Leader);
-
-        let leader_id = self.raw_node.raft.leader_id;
         let my_id = self.raw_node.raft.id;
 
-        let resp = fiber::block_on(self.pool.call(&leader_id, &lsn::Request {})?)?;
-        let target_lsn = resp.lsn;
-
         let replicaset_id = self.storage.instances.get(&my_id)?.replicaset_id;
         let replicaset = self.storage.replicasets.get(&replicaset_id)?;
         let replicaset = replicaset.ok_or_else(|| {
@@ -1253,13 +1248,12 @@ impl NodeImpl {
         })?;
         let master = self.storage.instances.get(&replicaset.master_id)?;
         let master_uuid = master.instance_uuid;
+
+        let resp = fiber::block_on(self.pool.call(&master.raft_id, &lsn::Request {})?)?;
+        let target_lsn = resp.lsn;
+
         let mut current_lsn = None;
 
-        #[derive(tlua::LuaRead)]
-        struct ReplicationInfo {
-            lsn: u64,
-            uuid: String,
-        }
         let replication: HashMap<u64, ReplicationInfo> =
             crate::tarantool::eval("return box.info.replication")?;
         for r in replication.values() {
@@ -1284,7 +1278,13 @@ impl NodeImpl {
             fiber::sleep(MainLoop::TICK * 4);
         }
 
-        Ok(())
+        return Ok(());
+
+        #[derive(tlua::LuaRead)]
+        struct ReplicationInfo {
+            lsn: u64,
+            uuid: String,
+        }
     }
 
     #[inline]