invokeApply=false doesn't make sense if you are exposing a promise based api. we already have a problem with $interval and there is a hack to workaround this in $timeout I think. Aren't you making the same mistake?