But yeah, typically:

Most programs today are written where you hopefully start listening before triggering the event: for example in a select/join, you start `wait_for_low`, then send "enable accelerometer interrupt signal". Something like:

```rust
let wait_fut = async {
    gpio.wait_for_low().await;
};

let go_fut = async {
    // ensure the gpio listener is polled first
    Timer::after_ms(1).await;
    acc
        .enable_fall_detect_interrupt()
        .await;
};

let _ = join(wait_fut, go_fut).await;
```

which is clunky and unfortunate