Мне все меньше нравится определение корутин через конечные автоматы. С одной стороны это верно, но при этом я не знаю удобного способа написания конечного автомата в общем виде через корутину, поскольку у нее нет входа, только внутреннее состояние.
Грубо говоря, в методе poll нет возможности передать пользовательские данные. Да, вход можно организовать, например, через канал, но это механизм, который находится немного сбоку от корутины.