This construction here is to prevent multiple rebuilds one after another. It's done for optimization reasons. And Multiple `$timeout` instances started in short period of time are able to 'eat' several MB of memory, `setTimeout` is much lighter. And I can decide when to trigger `$digest` (only when timeout callback is called, no `$digest` on canceling timeout).