I wrote this little code in a custom service in AngularJS.
In my service:
var deferred = $q.defer();
var promise = deferred.promise;
Here's a full solution picking up where @jessegavin left off.
var myApp = angular.module("myApp", []);
myApp.config(function ($provide) {
$provide.decorator('$q', function ($delegate) {
var defer = $delegate.defer;
$delegate.defer = function () {
var deferred = defer();
deferred.promise.success = function (fn) {
deferred.promise.then(function(response) {
fn(response.data, response.status, response.headers);
});
return deferred.promise;
};
deferred.promise.error = function (fn) {
deferred.promise.then(null, function(response) {
fn(response.data, response.status, response.headers);
});
return deferred.promise;
};
return deferred;
};
return $delegate;
});
});