this loop is breaked by 'return'.... who append when the timer list is empty or when it is not the time to do any callback.
the return value is the time before the next callback, or infitity if no timer.
And each iteration of the loop do all pending timer deletion and check/proccess one timer.