In the current state, the progress of the queue is updated with "Timeout" timers.
Whenever we deduce time to the currently processed item, we declare a new timer.
It is better to use a "Interval" timer to avoid declare/delete timer each time.
Also integrate lateness parameter.
And a little cleanup not directly related.