diff --git a/src/detail/face-impl.hpp b/src/detail/face-impl.hpp
index 248aca3..460d316 100644
--- a/src/detail/face-impl.hpp
+++ b/src/detail/face-impl.hpp
@@ -101,15 +101,21 @@
   /////////////////////////////////////////////////////////////////////////////////////////////////
 
   void
-  asyncExpressInterest(const shared_ptr<const Interest>& interest,
-                       const OnData& onData, const OnTimeout& onTimeout)
+  ensureConnected(bool wantResume = true)
   {
     if (!m_face.m_transport->isConnected())
       m_face.m_transport->connect(m_face.m_ioService,
                                   bind(&Face::onReceiveElement, &m_face, _1));
 
-    if (!m_face.m_transport->isExpectingData())
+    if (wantResume && !m_face.m_transport->isExpectingData())
       m_face.m_transport->resume();
+  }
+
+  void
+  asyncExpressInterest(const shared_ptr<const Interest>& interest,
+                       const OnData& onData, const OnTimeout& onTimeout)
+  {
+    this->ensureConnected();
 
     m_pendingInterestTable.push_back(make_shared<PendingInterest>(interest, onData, onTimeout));
 
@@ -141,12 +147,7 @@
   void
   asyncPutData(const shared_ptr<const Data>& data)
   {
-    if (!m_face.m_transport->isConnected())
-      m_face.m_transport->connect(m_face.m_ioService,
-                                  bind(&Face::onReceiveElement, &m_face, _1));
-
-    if (!m_face.m_transport->isExpectingData())
-      m_face.m_transport->resume();
+    this->ensureConnected();
 
     if (!data->getLocalControlHeader().empty(false, true))
       {
diff --git a/src/face.cpp b/src/face.cpp
index 8535924..57f9605 100644
--- a/src/face.cpp
+++ b/src/face.cpp
@@ -150,6 +150,7 @@
 
   m_impl->m_pitTimeoutCheckTimer      = make_shared<monotonic_deadline_timer>(ref(m_ioService));
   m_impl->m_processEventsTimeoutTimer = make_shared<monotonic_deadline_timer>(ref(m_ioService));
+  m_impl->ensureConnected(false);
 
   std::string protocol = "nrd-0.1";
 
diff --git a/src/util/dummy-client-face.cpp b/src/util/dummy-client-face.cpp
index a7ab505..ff24326 100644
--- a/src/util/dummy-client-face.cpp
+++ b/src/util/dummy-client-face.cpp
@@ -166,7 +166,7 @@
 shared_ptr<DummyClientFace>
 makeDummyClientFace(const DummyClientFace::Options& options)
 {
-  // cannot use make_shared<DummyClientFace> before DummyClientFace constructor is private
+  // cannot use make_shared<DummyClientFace> because DummyClientFace constructor is private
   return shared_ptr<DummyClientFace>(
          new DummyClientFace(options, make_shared<DummyClientFace::Transport>()));
 }
@@ -175,7 +175,7 @@
 makeDummyClientFace(boost::asio::io_service& ioService,
                     const DummyClientFace::Options& options)
 {
-  // cannot use make_shared<DummyClientFace> before DummyClientFace constructor is private
+  // cannot use make_shared<DummyClientFace> because DummyClientFace constructor is private
   return shared_ptr<DummyClientFace>(
          new DummyClientFace(options, make_shared<DummyClientFace::Transport>(),
                              ref(ioService)));
