@@ -57,15 +57,19 @@ $.ajax = function ravenAjaxWrapper(url, options) {
5757 options = options || { } ;
5858
5959 /*jshint -W084*/
60- while ( key = keys . pop ( ) ) {
60+ while ( key = keys . pop ( ) ) {
6161 if ( $ . isFunction ( options [ key ] ) ) {
6262 options [ key ] = Raven . wrap ( options [ key ] ) ;
6363 }
6464 }
6565 /*jshint +W084*/
6666
6767 try {
68- return _oldAjax . call ( this , url , options ) ;
68+ var jqXHR = _oldAjax . call ( this , url , options ) ;
69+ // jqXHR.complete is not a regular deferred callback
70+ if ( $ . isFunction ( jqXHR . complete ) )
71+ jqXHR . complete = Raven . wrap ( jqXHR . complete ) ;
72+ return jqXHR ;
6973 } catch ( e ) {
7074 Raven . captureException ( e ) ;
7175 throw e ;
@@ -74,12 +78,21 @@ $.ajax = function ravenAjaxWrapper(url, options) {
7478
7579var _oldDeferred = $ . Deferred ;
7680$ . Deferred = function ravenDeferredWrapper ( func ) {
77- return _oldDeferred ( function beforeStartWrapper ( deferred ) {
78- // no need to wrap deferred[ resolve | reject | notify ]
79- // as they are calling deferred[ resolveWith | rejectWith | notifyWith ] internally.
80- deferred . resolveWith = Raven . wrap ( deferred . resolveWith ) ;
81- deferred . rejectWith = Raven . wrap ( deferred . rejectWith ) ;
82- deferred . notifyWith = Raven . wrap ( deferred . notifyWith ) ;
81+ return ! _oldDeferred ? null : _oldDeferred ( function beforeStartWrapper ( deferred ) {
82+ var methods = [ 'resolve' , 'reject' , 'notify' , 'resolveWith' , 'rejectWith' , 'notifyWith' ] , method ;
83+
84+ // since jQuery 1.9, deferred[resolve | reject | notify] are calling internally
85+ // deferred[resolveWith | rejectWith | notifyWith] but we need to wrap them as well
86+ // to support all previous versions.
87+
88+ /*jshint -W084*/
89+ while ( method = methods . pop ( ) ) {
90+ if ( $ . isFunction ( deferred [ method ] ) ) {
91+ deferred [ method ] = Raven . wrap ( deferred [ method ] ) ;
92+ }
93+ }
94+ /*jshint +W084*/
95+
8396 // Call given func if any
8497 if ( func ) {
8598 func . call ( deferred , deferred ) ;
0 commit comments