Isn't  `deferred.reject()` returning a failed promise already?