diff --git a/ndn-cpp/c/transport/socket-transport.c b/ndn-cpp/c/transport/socket-transport.c
index 2a537db..6195e80 100644
--- a/ndn-cpp/c/transport/socket-transport.c
+++ b/ndn-cpp/c/transport/socket-transport.c
@@ -98,7 +98,7 @@
   pollInfo[0].fd = self->socketDescriptor;
   pollInfo[0].events = POLLIN;
   
-  int pollResult = poll(pollInfo, 1, 200);
+  int pollResult = poll(pollInfo, 1, 0);
 
   if (pollResult < 0)
     return NDN_ERROR_SocketTransport_error_in_poll;
diff --git a/ndn-cpp/c/transport/socket-transport.h b/ndn-cpp/c/transport/socket-transport.h
index 6c2da6e..148c3d3 100644
--- a/ndn-cpp/c/transport/socket-transport.h
+++ b/ndn-cpp/c/transport/socket-transport.h
@@ -52,6 +52,7 @@
 
 /**
  * Check if there is data ready on the socket to be received with ndn_SocketTransport_receive.
+ * This does not block, and returns immediately.
  * @param self A pointer to the ndn_SocketTransport struct.
  * @param receiveIsReady This will be set to 1 if data is ready, 0 if not.
  * @return 0 for success, else an error code.
diff --git a/ndn-cpp/c/transport/tcp-transport.h b/ndn-cpp/c/transport/tcp-transport.h
index 1860002..73e4e7f 100644
--- a/ndn-cpp/c/transport/tcp-transport.h
+++ b/ndn-cpp/c/transport/tcp-transport.h
@@ -53,6 +53,7 @@
 
 /**
  * Check if there is data ready on the socket to be received with ndn_TcpTransport_receive.
+ * This does not block, and returns immediately.
  * @param self A pointer to the ndn_TcpTransport struct.
  * @param receiveIsReady This will be set to 1 if data is ready, 0 if not.
  * @return 0 for success, else an error code.
diff --git a/ndn-cpp/c/transport/udp-transport.h b/ndn-cpp/c/transport/udp-transport.h
index c9f0d55..be60ab6 100644
--- a/ndn-cpp/c/transport/udp-transport.h
+++ b/ndn-cpp/c/transport/udp-transport.h
@@ -53,6 +53,7 @@
 
 /**
  * Check if there is data ready on the socket to be received with ndn_UdpTransport_receive.
+ * This does not block, and returns immediately.
  * @param self A pointer to the ndn_UdpTransport struct.
  * @param receiveIsReady This will be set to 1 if data is ready, 0 if not.
  * @return 0 for success, else an error code.
diff --git a/ndn-cpp/face.hpp b/ndn-cpp/face.hpp
index e0c1598..64d835c 100644
--- a/ndn-cpp/face.hpp
+++ b/ndn-cpp/face.hpp
@@ -68,8 +68,8 @@
   
   /**
    * Process any data to receive.  For each element received, call face.onReceivedElement.
-   * This is non-blocking and will silently time out after a brief period if there is no data to receive.
-   * You should repeatedly call this from an event loop.
+   * This is non-blocking and will return immediately if there is no data to receive.
+   * You should repeatedly call this from an event loop, with calls to sleep as needed so that the loop doesn't use 100% of the CPU.
    * @throw This may throw an exception for reading data or in the callback for processing the data.  If you
    * call this from an main event loop, you may want to catch and log/disregard all exceptions.
    */
diff --git a/ndn-cpp/transport/tcp-transport.hpp b/ndn-cpp/transport/tcp-transport.hpp
index 57d9554..f3c5e91 100644
--- a/ndn-cpp/transport/tcp-transport.hpp
+++ b/ndn-cpp/transport/tcp-transport.hpp
@@ -36,8 +36,8 @@
 
   /**
    * Process any data to receive.  For each element received, call face.onReceivedElement.
-   * This is non-blocking and will silently time out after a brief period if there is no data to receive.
-   * You should repeatedly call this from an event loop.
+   * This is non-blocking and will return immediately if there is no data to receive.
+   * You should normally not call this directly since it is called by Face.processEvents.
    * @throw This may throw an exception for reading data or in the callback for processing the data.  If you
    * call this from an main event loop, you may want to catch and log/disregard all exceptions.
    */
diff --git a/ndn-cpp/transport/udp-transport.hpp b/ndn-cpp/transport/udp-transport.hpp
index 17f6e25..4ea6324 100644
--- a/ndn-cpp/transport/udp-transport.hpp
+++ b/ndn-cpp/transport/udp-transport.hpp
@@ -36,8 +36,8 @@
 
   /**
    * Process any data to receive.  For each element received, call face.onReceivedElement.
-   * This is non-blocking and will silently time out after a brief period if there is no data to receive.
-   * You should repeatedly call this from an event loop.
+   * This is non-blocking and will return immediately if there is no data to receive.
+   * You should normally not call this directly since it is called by Face.processEvents.
    * @throw This may throw an exception for reading data or in the callback for processing the data.  If you
    * call this from an main event loop, you may want to catch and log/disregard all exceptions.
    */
diff --git a/tests/test-get-async.cpp b/tests/test-get-async.cpp
index 4b66e7d..4d7d202 100644
--- a/tests/test-get-async.cpp
+++ b/tests/test-get-async.cpp
@@ -48,8 +48,11 @@
     face.expressInterest(Name("/ndn/ucla.edu/apps/ndn-js-test/hello.txt/level2/%FD%05%0B%16%7D%95%0E"), &closure);
     
     // The main event loop.
-    while (!closure.gotContent_)
-      face.processEvents();    
+    while (!closure.gotContent_) {
+      face.processEvents();
+      // We need to sleep for a few milliseconds so we don't use 100% of the CPU.
+      usleep(10000);
+    }
   } catch (std::exception &e) {
     cout << "exception: " << e.what() << endl;
   }
