diff --git a/esp8266/modmachine.c b/esp8266/modmachine.c
index 222ed004d8262bc1891c53aa8ef9a207ed5766ac..c26c633967659fbe5248f88133a5eead4c1a8e46 100644
--- a/esp8266/modmachine.c
+++ b/esp8266/modmachine.c
@@ -157,7 +157,7 @@ STATIC mp_obj_t esp_timer_make_new(const mp_obj_type_t *type, size_t n_args, siz
 
 STATIC void esp_timer_cb(void *arg) {
     esp_timer_obj_t *self = arg;
-    mp_call_function_1_protected(self->callback, self);
+    mp_sched_schedule(self->callback, self);
 }
 
 STATIC mp_obj_t esp_timer_init_helper(esp_timer_obj_t *self, mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {