fix: settle concurrent stream event waiters in linear time (#2387)