* getToken()'s fail() handler deletes property from promiseGroup.
However sometimes this doesn't exist yet for the current api url.
Move the block that creates this object higher up.
* Deferred.then() used to have an undocumented 'this' context.
No longer exists in jQuery 3.0, but we weren't supposed to be
using returning it as-is anyway.
Return a new Deferred instead, like we do elsewhere.
Bug: T124742
Change-Id: I52c6bb779c5e79161e38a5d0c7c2cb3b458be9ba
- // Different error, pass on to let caller handle the error code
- return this;
+ // Let caller handle the error code
+ return $.Deferred().rejectWith( this, arguments );
}
);
} ).promise( { abort: function () {
}
);
} ).promise( { abort: function () {
promiseGroup = promises[ this.defaults.ajax.url ];
d = promiseGroup && promiseGroup[ type + 'Token' ];
promiseGroup = promises[ this.defaults.ajax.url ];
d = promiseGroup && promiseGroup[ type + 'Token' ];
+ if ( !promiseGroup ) {
+ promiseGroup = promises[ this.defaults.ajax.url ] = {};
+ }
+
if ( !d ) {
apiPromise = this.get( {
action: 'query',
if ( !d ) {
apiPromise = this.get( {
action: 'query',
// Clear promise. Do not cache errors.
delete promiseGroup[ type + 'Token' ];
// Clear promise. Do not cache errors.
delete promiseGroup[ type + 'Token' ];
- // Pass on to allow the caller to handle the error
- return this;
+ // Let caller handle the error code
+ return $.Deferred().rejectWith( this, arguments );
} )
// Attach abort handler
.promise( { abort: apiPromise.abort } );
// Store deferred now so that we can use it again even if it isn't ready yet
} )
// Attach abort handler
.promise( { abort: apiPromise.abort } );
// Store deferred now so that we can use it again even if it isn't ready yet
- if ( !promiseGroup ) {
- promiseGroup = promises[ this.defaults.ajax.url ] = {};
- }
promiseGroup[ type + 'Token' ] = d;
}
promiseGroup[ type + 'Token' ] = d;
}