Ajax queue do not serve the tasks (jQ 1.10.1)

http://stackoverflow.com/questions/18942277/ajax-queue-do-not-serve-the-tasks

by fiddlegrimbo

HTML

Failure rate (0 to 1):
<input id="failureRate" value="0" size="4" title="0 == never fail, 1 == always fail">
<button id="go">Go</button>
<button id="clear">Clear</button>
<div id="Status"></div>

CSS

body {
    font-size: 9pt;
    font-family: Tahoma;
}

JavaScript

var fakeTasks = $([1, 2, 3]).map(function () {
    return {
        TaskName: "task" + this
    };
}).toArray();

function jsFiddleData(data, delay) {
    // add a random delay of 0..4 seconds.
    delay = Math.floor(delay || Math.random() * 4);
    data.delay = delay;
    return {
        json: JSON.stringify(data),
        delay: delay
    };
}

function postStatus(s) {
    $("#Status").append(s + "<br>");
}

function postResponse(r, msg) {
    var colour = ("fail" === r.status) ? "red" : "green";
    msg = "<span style=color:" + colour + ">" + msg + "</span>";
    postStatus(msg);
}

function fail() {
    return newPromise("reject", arguments);
}

function ok() {
    return newPromise("resolve", arguments);
}

function newPromise(type, args) {
    return $.Deferred(function(dfd) {
        dfd[type].apply(dfd, args);
    }).promise();
}

function createObject() {
    var ob = {};
    // copy all the arguments name/value pairs into the error object
    for (var i = 0; i < arguments.length; i += 2) {
        var n = arguments[i];
        var v = arguments[i + 1];
        ob[n] = v;
    }
    return ob;
}

function getTasks() {
    return ajax({
        // replace original URL with jsfiddle URL and test data
        //url: "/Tests/GetData/",
        url: "/echo/json/",
        data: jsFiddleData(fakeTasks),

        type: 'POST',
        dataType: 'json',
        contentType: "application/json; charset=utf-8"
    }).then(function(data) {
        return ok(createObject("status", "ok", "op", "getTasks", "data", data));
    }, function() {
        return ok(createObject("status", "fail", "op", "getTasks"));
    });
}

function doTask(task) {
    return ajax({
        // replace original URL with jsfiddle URL and test data
        //url: "/Tests/DoTask/",
        //data: {
        //    taskName: task.TaskName
        //},

        //  + "?" + task.TaskName for cache-busting
        url: "/echo/json/" + "?" + task.TaskName,
        data: jsFiddleData({
           ...