use setTimeout in favor of angulars $interval

Also perform good canceling of the timeouts if necessary