1. Добавить мутабельный флаг, который будет изменяться снаружи. И по этому флагу делать break в цикле (плохой костыль)
2. Сделать врапер над оригинальным стримом с доп функционалом в виде отмены (отписка от оригинального стрима). Чуть менее плохой костыль.
3. Не делать await for для бесконечного стрима (самое нормальное решение)
Думал про флаг. В чистом виде конечно костыльно. Но я посмотрел, у стрима есть takeWhile. Если применить его к исходному бесконечному стриму с условием - флагом, то получим конечный стрим. Его уже слушать в await for.
Вроде должно так работать и не костыльно?