Resurrecting this 2-week old conversation since I'm hitting the same issue - specifically that this races: `loop { gpio.wait_for_low().await; do_something().await; }` Wonder how realistic it would be to have a 2-stage system, where you `gpio.prepare_wait_for_low()` and then `gpio.wait_for_next_event()`, which returns a new Future each time - taking advantage of the ISR bit hanging around til the next poll. Maybe a `self`-moving newtype that ensures you can't `wait_for_event` without first preparing an interrupt direction? I had another cursed idea, `unsafe`ly rewinding the Future somehow (on the rp2040 HAL, poll looks like it can run indefinitely), but I think the compiler will aggressively deinit any future that returns Ready, so it's a stupid idea.