There are lots of places where you're referring to the deferred as a promise. Deferred actually has a method `promise()` that returns a promise object that has a subset of deferred's methods - without resolve and fail for example. In general, a class that resolves its own deferreds should expose/return its the deferred's promise rather than the deferred, so that other code doesn't accidentally or intentionally resolve or fail the deferred unexpectedly on the owner's behalf.