diff --git a/unix/modtime.c b/unix/modtime.c
index 0c33249475d81199501476a77bfea0de9d161772..2a907a7736efa6bf2e0db455138bcec3785eb040 100644
--- a/unix/modtime.c
+++ b/unix/modtime.c
@@ -125,6 +125,9 @@ STATIC mp_obj_t mod_time_sleep(mp_obj_t arg) {
         if (res != -1 || errno != EINTR) {
             break;
         }
+        if (MP_STATE_VM(mp_pending_exception) != MP_OBJ_NULL) {
+            return mp_const_none;
+        }
         //printf("select: EINTR: %ld:%ld\n", tv.tv_sec, tv.tv_usec);
         #else
         break;