DeleteTimerQueueTimer is documented as returning FALSE with GetLastError value ERROR_IO_PENDING when the callback is queued to run or is running (when using NULL as the notification completion handle). The documentation indicates that if the routine returns FALSE with a different GetLastError value, it should be retried. However, the documentation does not really provide any reasons why a different GetLastError would be returned, or why a retry (how many?) would stand any better chance of success. The questions then are assuming a valid timer queue handle, and timer handle, and NULL as the completion notification what are the other possible GetLastError return values, other than ERROR_IO_PENDING. If a GetLastError returns FALSE with a GetLastError being something other than ERROR_IO_PENDING, and the call is not retried, is there a possibility then that the timer callback will actually fire in the future, assuming it hasn't fired yet (or is not queued to fire).