diff --git a/src/reachability.rs b/src/reachability.rs
index 0ed46adc47aedd9ff9a5da3cb08da2007e3ded00..ae195fb4f7148520a63857a0c4e702b634231736 100644
--- a/src/reachability.rs
+++ b/src/reachability.rs
@@ -2,7 +2,7 @@ use crate::storage;
 use crate::storage::Clusterwide;
 use crate::storage::PropertyName;
 use crate::traft::RaftId;
-use std::cell::RefCell;
+use crate::util::NoYieldsRefCell;
 use std::collections::HashMap;
 use std::collections::HashSet;
 use std::rc::Rc;
@@ -18,13 +18,18 @@ use tarantool::time::Instant;
 /// all known instances.
 #[derive(Debug, Default)]
 pub struct InstanceReachabilityManager {
-    // TODO: Will be used to read configuration from
-    #[allow(unused)]
     storage: Option<Clusterwide>,
     infos: HashMap<RaftId, InstanceReachabilityInfo>,
 }
 
-pub type InstanceReachabilityManagerRef = Rc<RefCell<InstanceReachabilityManager>>;
+pub type InstanceReachabilityManagerRef = Rc<NoYieldsRefCell<InstanceReachabilityManager>>;
+
+#[inline(always)]
+pub fn instance_reachability_manager(storage: Clusterwide) -> InstanceReachabilityManagerRef {
+    Rc::new(NoYieldsRefCell::new(InstanceReachabilityManager::new(
+        storage,
+    )))
+}
 
 impl InstanceReachabilityManager {
     pub fn new(storage: Clusterwide) -> Self {
diff --git a/src/traft/node.rs b/src/traft/node.rs
index 447ea419fd2a3fa89d8a9dab6657bb7fc5b264dc..2e0b7129f8487328f6db48be3a43745e7545ac82 100644
--- a/src/traft/node.rs
+++ b/src/traft/node.rs
@@ -12,7 +12,8 @@ use crate::instance::Instance;
 use crate::kvcell::KVCell;
 use crate::loop_start;
 use crate::r#loop::FlowControl;
-use crate::reachability::InstanceReachabilityManager;
+use crate::reachability::instance_reachability_manager;
+use crate::reachability::InstanceReachabilityManagerRef;
 use crate::rpc;
 use crate::schema::{Distribution, IndexDef, TableDef};
 use crate::sentinel;
@@ -67,7 +68,6 @@ use ::tarantool::vclock::Vclock;
 use protobuf::Message as _;
 
 use std::cell::Cell;
-use std::cell::RefCell;
 use std::cmp::Ordering;
 use std::collections::HashMap;
 use std::convert::TryFrom;
@@ -185,9 +185,7 @@ impl Node {
             ..Default::default()
         };
         let mut pool = ConnectionPool::new(storage.clone(), opts);
-        let instance_reachability = Rc::new(RefCell::new(InstanceReachabilityManager::new(
-            storage.clone(),
-        )));
+        let instance_reachability = instance_reachability_manager(storage.clone());
         pool.instance_reachability = instance_reachability.clone();
         let pool = Rc::new(pool);
 
@@ -430,7 +428,7 @@ pub(crate) struct NodeImpl {
     lc: LogicalClock,
     status: watch::Sender<Status>,
     applied: watch::Sender<RaftIndex>,
-    instance_reachability: Rc<RefCell<InstanceReachabilityManager>>,
+    instance_reachability: InstanceReachabilityManagerRef,
 }
 
 impl NodeImpl {