JQuery Promised

Je galère sur un problème JavaScript à la con et j’ai vraiment besoin d’aide pour me débloquer.

J’aimerai lancer deux requêtes Ajax puis en lancer une troisième avec des informations récupérées depuis les deux premières, il faut donc que j’attende le retour des 2 premières.

Le coté asynchrone de JavaScript me lourde un peu :

var promises = [];
            promises.push([$.ajax({
                type: "POST",
                data: sendAsJson,
                headers: {
                    accountId: "16409",
                    token: "RWOujI5AALtJmlkFxgBzU4OLfZY="
                },
                url: '/dashboard/rest/demo/image',
                cache: false,
                contentType: "application/json",
                processData: false
            }), $.ajax({
                type: "POST",
                data: sendAsJson,
                headers: {
                    accountId: "16409",
                    token: "RWOujI5AALtJmlkFxgBzU4OLfZY="
                },
                url: '/dashboard/rest/demo/links',
                cache: false,
                contentType: "application/json",
                processData: false
            })]);



            $.when.apply($, promises).done(function (promises) {
                var linkId = promises[1].responseJSON[0].linkId;
                var finalData;
                
                 var htmlContent = send.htmlContent;
                send.htmlContent = htmlContent.replace(new RegExp('atxf2whFdk6jH9bt5zI0XA', 'g'), linkId);
                
                finalData = JSON.stringify(campaign);
                sendCampaign(finalData, 'application/json');
            }, function () {});
        };

Ce code fonctionne parfaitement en debug, mais il ne fonctionne pas en cas classique : il plante avec un responseJSON is undefined. Pourtant d’après les différentes doc, ça devrait fonctionner.

Un peu d’aide please.

Réponse à moi même, il se trouve que le code suivant, mais je n’ai pas vraiment compris la différence :

var imageAjax = $.ajax({
     type: "POST",
                data: sendAsJson,
                headers: {
                    accountId: "16409",
                    token: "RWOujI5AALtJmlkFxgBzU4OLfZY="
                },
                url: '/dashboard/rest/demo/image',
                cache: false,
                contentType: "application/json",
                processData: false
            });
            var linkAjax = $.ajax({
                type: "POST",
                data: sendAsJson,
                headers: {
                    accountId: "16409",
                    token: "RWOujI5AALtJmlkFxgBzU4OLfZY="
                },
                url: '/dashboard/rest/demo/links',
                cache: false,
                contentType: "application/json",
                processData: false
            });



            $.when(imageAjax, linkAjax).done(function (imageResult, linkResult) {
                var linkId = linkResult[0][1].linkId;
                var finalData;

                var htmlContent = send.htmlContent;
                send.htmlContent = htmlContent.replace(new RegExp('atxf2whFdk6jH9bt5zI0XA', 'g'), linkId);
              
                    finalData = JSON.stringify(campaign);
                    sendCampaign(finalData, 'application/json');
            });