@@ -57,15 +57,19 @@ $.ajax = function ravenAjaxWrapper(url, options) {
57
57
options = options || { } ;
58
58
59
59
/*jshint -W084*/
60
- while ( key = keys . pop ( ) ) {
60
+ while ( key = keys . pop ( ) ) {
61
61
if ( $ . isFunction ( options [ key ] ) ) {
62
62
options [ key ] = Raven . wrap ( options [ key ] ) ;
63
63
}
64
64
}
65
65
/*jshint +W084*/
66
66
67
67
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 ;
69
73
} catch ( e ) {
70
74
Raven . captureException ( e ) ;
71
75
throw e ;
@@ -74,12 +78,21 @@ $.ajax = function ravenAjaxWrapper(url, options) {
74
78
75
79
var _oldDeferred = $ . Deferred ;
76
80
$ . 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
+
83
96
// Call given func if any
84
97
if ( func ) {
85
98
func . call ( deferred , deferred ) ;
0 commit comments