Updated event-driven read loop