diff options
| author | Igor Minar | 2012-04-02 10:10:46 -0700 | 
|---|---|---|
| committer | Igor Minar | 2012-04-02 10:14:04 -0700 | 
| commit | c0b78478a0e64942a69aba7c1bfa4eb01c0e9a5e (patch) | |
| tree | 3130c15a619d9aa20ec6b2188ef7e4e25bee1d13 | |
| parent | 59fa40ec0e851759d35fb0ea5fd01019d1403049 (diff) | |
| download | angular.js-c0b78478a0e64942a69aba7c1bfa4eb01c0e9a5e.tar.bz2 | |
fix($q): $q.reject should forward callbacks if missing
$q.reject('some reason').then() should not blow up, but correctly
forward the callbacks instead.
Closes #845
| -rw-r--r-- | src/ng/q.js | 2 | ||||
| -rw-r--r-- | test/ng/qSpec.js | 8 | 
2 files changed, 9 insertions, 1 deletions
diff --git a/src/ng/q.js b/src/ng/q.js index 074acd1d..b8e1166e 100644 --- a/src/ng/q.js +++ b/src/ng/q.js @@ -274,7 +274,7 @@ function qFactory(nextTick, exceptionHandler) {        then: function(callback, errback) {          var result = defer();          nextTick(function() { -          result.resolve(errback(reason)); +          result.resolve((errback || defaultErrback)(reason));          });          return result.promise;        } diff --git a/test/ng/qSpec.js b/test/ng/qSpec.js index a230d1de..941b4f2e 100644 --- a/test/ng/qSpec.js +++ b/test/ng/qSpec.js @@ -480,6 +480,14 @@ describe('q', function() {        syncResolve(deferred, rejectedPromise);        expect(log).toEqual(['error(Error: not gonna happen)']);      }); + + +    it('should return a promise that forwards callbacks if the callbacks are missing', function() { +      var rejectedPromise = q.reject('rejected'); +      promise.then(success(), error()); +      syncResolve(deferred, rejectedPromise.then()); +      expect(log).toEqual(['error(rejected)']); +    });    });  | 
