Skip to content

Commit d2f6ea8

Browse files
mariarekberickson1
authored andcommitted
Check for _aborted before _fire() (#38)
* Check for _aborted before _fire()
1 parent e62c713 commit d2f6ea8

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "simplerestclients",
3-
"version": "0.2.1",
3+
"version": "0.2.2",
44
"description": "A library of components for accessing RESTful services with javascript/typescript.",
55
"author": "David de Regt <David.de.Regt@microsoft.com>",
66
"scripts": {

src/SimpleWebRequest.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ export abstract class SimpleWebRequestBase<TOptions extends WebRequestOptions =
223223
blockPromise.finally(() => {
224224
_.remove(blockedList, req);
225225
}).then(() => {
226-
if (executingList.length < SimpleWebRequestOptions.MaxSimultaneousRequests) {
226+
if (executingList.length < SimpleWebRequestOptions.MaxSimultaneousRequests && !req._aborted) {
227227
executingList.push(req);
228228
req._fire();
229229
} else {

test/SimpleWebRequest.spec.ts

+13
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,19 @@ describe('SimpleWebRequest', () => {
266266

267267
blockDefer.reject(errorString);
268268
});
269+
270+
it('does not attempt to fire aborted request, if it was aborted while blocked', () => {
271+
SimpleWebRequestOptions.MaxSimultaneousRequests = 1;
272+
const url = faker.internet.url();
273+
const method = 'GET';
274+
const blockDefer = SyncTasks.Defer<void>();
275+
const requestPromise = new SimpleWebRequest<string>(url, method, { priority: WebRequestPriority.Critical }, undefined, () => blockDefer.promise()).start();
276+
requestPromise.cancel();
277+
278+
blockDefer.resolve(void 0);
279+
expect(jasmine.Ajax.requests.count()).toBe(0);
280+
281+
});
269282
});
270283

271284
// @TODO Add more unit tests

0 commit comments

Comments
 (0)