diff --git a/esp8266/utils.c b/esp8266/utils.c
index e91ebe318deef13b78275559a607ec2b2ffb5311..b2bdcffbe5033bcfc9030a25e81100197911c30b 100644
--- a/esp8266/utils.c
+++ b/esp8266/utils.c
@@ -29,22 +29,22 @@
 #include "py/obj.h"
 #include "py/nlr.h"
 
-mp_obj_t call_function_1_protected(mp_obj_t fun, mp_obj_t arg) {
+void call_function_1_protected(mp_obj_t fun, mp_obj_t arg) {
     nlr_buf_t nlr;
     if (nlr_push(&nlr) == 0) {
-        return mp_call_function_1(fun, arg);
+        mp_call_function_1(fun, arg);
+        nlr_pop();
     } else {
         mp_obj_print_exception(&mp_plat_print, (mp_obj_t)nlr.ret_val);
-        return (mp_obj_t)nlr.ret_val;
     }
 }
 
-mp_obj_t call_function_2_protected(mp_obj_t fun, mp_obj_t arg1, mp_obj_t arg2) {
+void call_function_2_protected(mp_obj_t fun, mp_obj_t arg1, mp_obj_t arg2) {
     nlr_buf_t nlr;
     if (nlr_push(&nlr) == 0) {
-        return mp_call_function_2(fun, arg1, arg2);
+        mp_call_function_2(fun, arg1, arg2);
+        nlr_pop();
     } else {
         mp_obj_print_exception(&mp_plat_print, (mp_obj_t)nlr.ret_val);
-        return (mp_obj_t)nlr.ret_val;
     }
 }
diff --git a/esp8266/utils.h b/esp8266/utils.h
index ceef9720e884b6539faef5f9a1d768dc68a50f50..c6a4f1f3e6511c8c87be174b03715bfbbbc64ef2 100644
--- a/esp8266/utils.h
+++ b/esp8266/utils.h
@@ -25,5 +25,5 @@
  * THE SOFTWARE.
  */
 
-mp_obj_t call_function_1_protected(mp_obj_t fun, mp_obj_t arg);
-mp_obj_t call_function_2_protected(mp_obj_t fun, mp_obj_t arg1, mp_obj_t arg2);
+void call_function_1_protected(mp_obj_t fun, mp_obj_t arg);
+void call_function_2_protected(mp_obj_t fun, mp_obj_t arg1, mp_obj_t arg2);