diff --git a/esp8266/ets_alt_task.c b/esp8266/ets_alt_task.c
index 91623f06dffe88c0f05483e63bfdce45ed54506a..563aeb5acb9abdbb986b2821e1c1eb6fd109dcd6 100644
--- a/esp8266/ets_alt_task.c
+++ b/esp8266/ets_alt_task.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include "xtirq.h"
 #include "osapi.h"
 #include "os_type.h"
 #include "ets_sys.h"
@@ -108,6 +109,9 @@ bool ets_post(uint8 prio, os_signal_t sig, os_param_t param) {
 }
 
 bool ets_loop_iter(void) {
+    if (query_irq() != 0) {
+        return false;
+    }
     //static unsigned cnt;
     bool progress = false;
     for (volatile struct task_entry *t = emu_tasks; t < &emu_tasks[MP_ARRAY_SIZE(emu_tasks)]; t++) {