Lumpio-: you have to do it that way, otherwise you can have a race condition deadlock if an interrupt happens at the right moment: ```rust poll_fn(|cx| { if r.events_endtx.read().bits() != 0 { Poll::Ready(()) } else { // INTERRUPT HAPPENS HERE s.endtx_waker.register(cx.waker()); Poll::Pending } }).await;