diff --git a/default.nix b/default.nix
--- a/default.nix
+++ b/default.nix
@@ -5,7 +5,7 @@
 
 mkDerivation {
   pname = "kafka-device";
-  version = "1.0.2.0";
+  version = "1.0.2.1";
   src = ./.;
   isLibrary = true;
   isExecutable = true;
diff --git a/kafka-device.cabal b/kafka-device.cabal
--- a/kafka-device.cabal
+++ b/kafka-device.cabal
@@ -1,5 +1,5 @@
 name         : kafka-device
-version      : 1.0.2.0
+version      : 1.0.2.1
 synopsis     : UI device events via a Kafka message broker
 description  : This package contains functions for passing UI device events to topics on a Kafka message broker \<<https://kafka.apache.org/>\>.  Also see \<<https://hackage.haskell.org/package/kafka-device-joystick/>\>, \<<https://hackage.haskell.org/package/kafka-device-glut/>\>, \<<https://hackage.haskell.org/package/kafka-device-spacenav/>\>, \<<https://hackage.haskell.org/package/kafka-device-leap/>\>.
 license      : MIT
diff --git a/src/Network/UI/Kafka.hs b/src/Network/UI/Kafka.hs
--- a/src/Network/UI/Kafka.hs
+++ b/src/Network/UI/Kafka.hs
@@ -33,7 +33,7 @@
 
 
 import Control.Arrow ((***))
-import Control.Concurrent (MVar, newEmptyMVar, isEmptyMVar, threadDelay, tryPutMVar)
+import Control.Concurrent (MVar, newEmptyMVar, isEmptyMVar, threadDelay, tryPutMVar, yield)
 import Control.Monad (void, when)
 import Control.Monad.Except (liftIO)
 import Data.Aeson.Types (FromJSON, ToJSON)
@@ -167,7 +167,9 @@
               (TopicAndMessage (fromString topic) . toMessage)
               events
           running <- liftIO $ isEmptyMVar exitFlag
-          when (running && not (null events))
+          when (null events)
+            $ liftIO yield
+          when running
             loop
     return
       (
