diff --git a/src/rp2_common/pico_multicore/multicore.c b/src/rp2_common/pico_multicore/multicore.c
index 8730036c5af66417731661b194853678c275e772..d24f3675204aabb7074f52237d2f3a964f345a9b 100644
--- a/src/rp2_common/pico_multicore/multicore.c
+++ b/src/rp2_common/pico_multicore/multicore.c
@@ -71,8 +71,7 @@ bool multicore_fifo_pop_timeout_us(uint64_t timeout_us, uint32_t *out) {
     // If nothing there yet, we wait for an event first,
     // to try and avoid too much busy waiting
     while (!multicore_fifo_rvalid()) {
-        __wfe();
-        if (time_reached(end_time)) return false;
+        if (best_effort_wfe_or_timeout(end_time)) return false;
     }
 
     *out = sio_hw->fifo_rd;