@@ -360,7 +360,7 @@ function qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {
360360} else if ( state . status === 1 ) {
361361resolvePromise ( promise , state . value ) ;
362362} else {
363- rejectPromise ( promise , state . value ) ;
363+ rejectPromise ( promise , state . value , state . error ) ;
364364}
365365} catch ( e ) {
366366rejectPromise ( promise , e ) ;
@@ -384,7 +384,7 @@ function qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {
384384if ( toCheck . value instanceof Error ) {
385385exceptionHandler ( toCheck . value , errorMessage ) ;
386386} else {
387- exceptionHandler ( errorMessage ) ;
387+ exceptionHandler ( toCheck . error , errorMessage ) ;
388388}
389389}
390390}
@@ -448,15 +448,20 @@ function qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {
448448}
449449}
450450
451- function rejectPromise ( promise , reason ) {
451+ function rejectPromise ( promise , reason , e ) {
452452if ( promise . $$state . status ) return ;
453- $$reject ( promise , reason ) ;
453+ $$reject ( promise , reason , e ) ;
454454}
455455
456- function $$reject ( promise , reason ) {
456+ function $$reject ( promise , reason , e ) {
457457promise . $$state . value = reason ;
458458promise . $$state . status = 2 ;
459- scheduleProcessQueue ( promise . $$state ) ;
459+ if ( e && e . reason === reason ) {
460+ promise . $$state . error = e ;
461+ } else {
462+ promise . $$state . error = new Error ( reason ) ;
463+ promise . $$state . error . reason = reason ;
464+ }
460465}
461466
462467function notifyPromise ( promise , progress ) {