Angular Prefixes $ and $$: To prevent accidental name collisions with your code, Angular prefixes names of public objects with $ and names of private objects with $$. Please do not use the $ or $$ prefix in your code

It is unlikely that $q will introduce breaking changes towards $$state. However, its usage indicates that promises are not used properly.