diff --git a/src/peer_connection.cpp b/src/peer_connection.cpp
index 4c39eb67eadcf741b6a4256b7a5a4e92b093cfdb..d1c0179a9e1476419f1e602f31c92573ab61bc3a 100644
--- a/src/peer_connection.cpp
+++ b/src/peer_connection.cpp
@@ -578,9 +578,12 @@ PeerConnection::PeerConnectionImpl::eventLoop()
                 throw std::system_error(ec);
             });
         handle_stream_list(outputs_, [&](auto& stream) {
-                auto size = endpoint_->read(buf, ec);
-                if (!ec)
-                    return size > 0 and stream->write(buf);
+                if (endpoint_->waitForData(10, ec) > 0) {
+                    auto size = endpoint_->read(buf, ec);
+                    if (!ec)
+                        return size > 0 and stream->write(buf);
+                } else if (!ec)
+                    return true; // continue on msg handling
                 throw std::system_error(ec);
             });
     }