Круто. Вместо receiveOrNull лучше использовать просто receive, чтобы exception прокидывался?
вообще, тогда лучше делать receiveOrClosed() - и прокидывать ошибку, если там реально было ошибка
если использовать receive() - то даже если канал закрылся просто так (во flow закончились элементы, будет ошибка)
вообще, думаю можно заменить наружный цикл на consumeEach