diff --git a/src/backend.cmod b/src/backend.cmod
index 826a0eaa88968947293c7c4c9b01ccda3430ab26..db05aa48fdecf02c35876d3ff7a33155d81c05dd 100644
--- a/src/backend.cmod
+++ b/src/backend.cmod
@@ -3650,8 +3650,8 @@ static void noteEvents(CFFileDescriptorRef fdref, CFOptionFlags UNUSED(callBackT
     DECLARE_POLL_EXTRAS;
 #endif /* DECLARE_POLL_EXTRAS */
 
-    SET_ONERROR(uwp, low_backend_cleanup, me);
     low_backend_once_setup(pdb->backend, &start_time);
+    SET_ONERROR(uwp, low_backend_cleanup, me);
 
     if (TYPEOF(me->before_callback) != T_INT)
       call_backend_monitor_cb (me, &me->before_callback);
@@ -4514,8 +4514,8 @@ PIKECLASS PollBackend
     DECLARE_POLL_EXTRAS;
 #endif /* DECLARE_POLL_EXTRAS */
 
-    SET_ONERROR(uwp, low_backend_cleanup, THIS->backend);
     low_backend_once_setup(pb->backend, &start_time);
+    SET_ONERROR(uwp, low_backend_cleanup, THIS->backend);
 
     if (TYPEOF(me->before_callback) != T_INT)
       call_backend_monitor_cb (me, &me->before_callback);
@@ -5083,8 +5083,8 @@ PIKECLASS SelectBackend
     DECLARE_POLL_EXTRAS;
 #endif /* DECLARE_POLL_EXTRAS */
 
-    SET_ONERROR(uwp, low_backend_cleanup, THIS->backend);
     low_backend_once_setup(sb->backend, &start_time);
+    SET_ONERROR(uwp, low_backend_cleanup, THIS->backend);
 
     if (TYPEOF(me->before_callback) != T_INT)
       call_backend_monitor_cb (me, &me->before_callback);