I thought about that too. But in that case, $timeout will cause problems I think. $timeout will indeed call the handler function within a digest cycle. But the handler function calls $apply, which would fail if already in a digest cycle. And we do need handler to call $apply, because it's also called on contextmenu events. So I think using the native setTimeout API is fine here. Maybe a comment explaining why we need to use the native setTimeout API would make sense though.