diff --git a/daemon/mgmt/internal-face.cpp b/daemon/mgmt/internal-face.cpp
index 5552d02..81bd2de 100644
--- a/daemon/mgmt/internal-face.cpp
+++ b/daemon/mgmt/internal-face.cpp
@@ -5,6 +5,7 @@
  */
 
 #include "internal-face.hpp"
+#include "core/global-io.hpp"
 
 namespace nfd {
 
@@ -20,6 +21,15 @@
 {
   onSendInterest(interest);
 
+  // Invoke .processInterest a bit later,
+  // to avoid potential problems in forwarding pipelines.
+  getGlobalIoService().post(bind(&InternalFace::processInterest,
+                                 this, boost::cref(interest)));
+}
+
+void
+InternalFace::processInterest(const Interest& interest)
+{
   if (m_interestFilters.size() == 0)
     {
       NFD_LOG_DEBUG("no Interest filters to match against");
diff --git a/daemon/mgmt/internal-face.hpp b/daemon/mgmt/internal-face.hpp
index 3ce32e3..3f061fb 100644
--- a/daemon/mgmt/internal-face.hpp
+++ b/daemon/mgmt/internal-face.hpp
@@ -20,9 +20,14 @@
   /**
    * \brief InternalFace-related error
    */
-  struct Error : public Face::Error
+  class Error : public Face::Error
   {
-    Error(const std::string& what) : Face::Error(what) {}
+  public:
+    explicit
+    Error(const std::string& what)
+      : Face::Error(what)
+    {
+    }
   };
 
   InternalFace();
@@ -54,7 +59,10 @@
   put(const Data& data);
 
 private:
+  void
+  processInterest(const Interest& interest);
 
+private:
   std::map<Name, OnInterest> m_interestFilters;
   CommandValidator m_validator;
 };
diff --git a/tests/mgmt/face-manager.cpp b/tests/mgmt/face-manager.cpp
index 9cfca66..d439ea4 100644
--- a/tests/mgmt/face-manager.cpp
+++ b/tests/mgmt/face-manager.cpp
@@ -653,6 +653,7 @@
          command->getName(), 400, "Malformed command");
 
   getFace()->sendInterest(*command);
+  g_io.run_one();
 
   BOOST_REQUIRE(didCallbackFire());
 }
diff --git a/tests/mgmt/fib-manager.cpp b/tests/mgmt/fib-manager.cpp
index 5076e0d..d672ab7 100644
--- a/tests/mgmt/fib-manager.cpp
+++ b/tests/mgmt/fib-manager.cpp
@@ -228,6 +228,7 @@
          command.getName(), 400, "Malformed command");
 
   face->sendInterest(command);
+  g_io.run_one();
 
   BOOST_REQUIRE(didCallbackFire());
 }
diff --git a/tests/mgmt/internal-face.cpp b/tests/mgmt/internal-face.cpp
index f4d51ca..8f70402 100644
--- a/tests/mgmt/internal-face.cpp
+++ b/tests/mgmt/internal-face.cpp
@@ -118,6 +118,7 @@
   Name commandName("/localhost/nfd/fib/end");
   Interest command(commandName);
   face->sendInterest(command);
+  g_io.run_one();
 
   BOOST_REQUIRE(didOnInterestFire());
   BOOST_REQUIRE(didNoOnInterestFire() == false);
@@ -140,6 +141,7 @@
   Name commandName("/localhost/nfd");
   Interest command(commandName);
   face->sendInterest(command);
+  g_io.run_one();
 
   BOOST_REQUIRE(didNoOnInterestFire() == false);
 }
@@ -168,6 +170,7 @@
   Name commandName("/localhost/nfd/fib");
   Interest command(commandName);
   face->sendInterest(command);
+  g_io.run_one();
 
   BOOST_REQUIRE(didOnInterestFire());
   BOOST_REQUIRE(didNoOnInterestFire() == false);
@@ -193,6 +196,7 @@
   Name commandName("/localhost/nfd/fib/previous");
   Interest command(commandName);
   face->sendInterest(command);
+  g_io.run_one();
 
   BOOST_REQUIRE(didOnInterestFire());
   BOOST_REQUIRE(didNoOnInterestFire() == false);
diff --git a/tests/mgmt/status-server.cpp b/tests/mgmt/status-server.cpp
index 99aa9f8..59a283e 100644
--- a/tests/mgmt/status-server.cpp
+++ b/tests/mgmt/status-server.cpp
@@ -34,7 +34,7 @@
   internalFace->onReceiveData += &interceptResponse;
   StatusServer statusServer(internalFace, boost::ref(forwarder));
   time::system_clock::TimePoint t2 = time::system_clock::now();
-  
+
   // populate tables
   forwarder.getFib().insert("ndn:/fib1");
   forwarder.getPit().insert(*makeInterest("ndn:/pit1"));
@@ -47,28 +47,29 @@
   BOOST_CHECK_GE(forwarder.getFib().size(), 1);
   BOOST_CHECK_GE(forwarder.getPit().size(), 4);
   BOOST_CHECK_GE(forwarder.getMeasurements().size(), 3);
-  
+
   // request
   shared_ptr<Interest> request = makeInterest("ndn:/localhost/nfd/status");
   request->setMustBeFresh(true);
   request->setChildSelector(1);
-  
+
   g_response.reset();
   time::system_clock::TimePoint t3 = time::system_clock::now();
   internalFace->sendInterest(*request);
+  g_io.run_one();
   time::system_clock::TimePoint t4 = time::system_clock::now();
   BOOST_REQUIRE(static_cast<bool>(g_response));
-  
+
   // verify
   ndn::nfd::Status status;
   BOOST_REQUIRE_NO_THROW(status.wireDecode(g_response->getContent()));
-  
+
   BOOST_CHECK_EQUAL(status.getNfdVersion(), NFD_VERSION);
   BOOST_CHECK_GE(time::toUnixTimestamp(status.getStartTimestamp()), time::toUnixTimestamp(t1));
   BOOST_CHECK_LE(time::toUnixTimestamp(status.getStartTimestamp()), time::toUnixTimestamp(t2));
   BOOST_CHECK_GE(time::toUnixTimestamp(status.getCurrentTimestamp()), time::toUnixTimestamp(t3));
   BOOST_CHECK_LE(time::toUnixTimestamp(status.getCurrentTimestamp()), time::toUnixTimestamp(t4));
-  
+
   // StatusServer under test isn't added to Forwarder,
   // so request and response won't affect table size
   BOOST_CHECK_EQUAL(status.getNNameTreeEntries(), forwarder.getNameTree().size());
diff --git a/tests/mgmt/strategy-choice-manager.cpp b/tests/mgmt/strategy-choice-manager.cpp
index f24d58a..9f9c3ce 100644
--- a/tests/mgmt/strategy-choice-manager.cpp
+++ b/tests/mgmt/strategy-choice-manager.cpp
@@ -189,6 +189,7 @@
          command->getName(), 400, "Malformed command");
 
   getFace()->sendInterest(*command);
+  g_io.run_one();
 
   BOOST_REQUIRE(didCallbackFire());
 }
