Hello and Happy New Year everyone !

I have a little issue with nodes in my treePanel : It won't expand and showing the "loading" animation indefinitely. While searching it showed tat there is an async somewhere not finishing and then the expand can't work. Is there a way to not wait or a way to show all async requests going on ? I didn't see any of it.

The JSON :
Code:
[{
    "NomTypMat": "PHARMA",
    "LibTypMat": "Pharmacie",
    "Last": 1,
    "CodGen": "",
    "ContexteMat": "PHARMA",
    "Niv1": "O"
}, {
    "NomTypMat": "SANG",
    "LibTypMat": "Sang",
    "Last": 1,
    "CodGen": "",
    "ContexteMat": "SANG",
    "Niv1": "N"
}, {
    "NomTypMat": "LABO",
    "LibTypMat": "Laboratoire",
    "Last": 1,
    "CodGen": "",
    "ContexteMat": "LABO",
    "Niv1": "O"
}, {
    "NomTypMat": "SENOLOG",
    "LibTypMat": "Senologie",
    "Last": 1,
    "CodGen": "",
    "ContexteMat": "SENOLOG",
    "Niv1": "N"
}, {
    "NomTypMat": "INTER",
    "LibTypMat": "Inter-service",
    "Last": 1,
    "CodGen": "",
    "ContexteMat": "INTER",
    "Niv1": "N"
}, {
    "NomTypMat": "ADMIN",
    "LibTypMat": "Administratif",
    "Last": 1,
    "CodGen": "",
    "ContexteMat": "ADMIN",
    "Niv1": "N"
}]
The request (in js)
Code:
Ext.Ajax.request({
     url: "ContextMatTree.php",
     success:function (response, options) {
        try {
            var responseArray = Ext.decode(response.responseText);
            launchTree(responseArray, this.config);
        }
        catch(e) {
            if ( typeof console != "undefined" ) console.error(e);
        }
     },
     failure:function (response, options) {
        if ( typeof console != "undefined" ) console.error(e);
     },
     scope: this
});
And here how i load my tree :
Code:
var launchTree = function(responseArray, config) {
    if(responseArray.length == 0) {
    // special treatment to not show a tree
    }
    else {
        var tree = new Ext.tree.TreePanel({
            id: 'treeMat',
            renderTo: Ext.getBody(),
            root : {
                  text : 'Root', id: 'root', expanded: true
            },
            title:  'Choix du Type Matière',
            width:  400,
            height: 500,
            useArrows:   false,
            animate : false,
            rootVisible: false
        });
        tree.on("click", function(node, e) {
            if (node.leaf) {
            }
            else {
                if ( node.isExpanded() )
                   node.collapse();
                else
                   node.expand();
            }
        });
        var root = tree.getRootNode();
        var nodeUrgent = root.appendChild({ text: 'Urgences', id:'Emergency' });
        for( var Ctxt = 0 ; Ctxt < responseArray.length ; Ctxt++ ) {
             var codGen = responseArray[Ctxt].CodGen;
             var leaf = ( responseArray[Ctxt].Last == 0 ) ? false : true;
             var nextNode = { leaf:   leaf,
                              text:   responseArray[Ctxt].NomTypMat + " - " + responseArray[Ctxt].LibTypMat,
                              id:     responseArray[Ctxt].NomTypMat,
                              ctxtMat:responseArray[Ctxt].ContexteMat  
                            };
             if ( responseArray[Ctxt].Niv1 == "O" ) { 
                nodeUrgent.appendChild( nextNode );
             }
             else {
                 if (codGen == "" && leaf == false)
                    root.appendChild( nextNode);
                 else {
                    var racine = responseArray[Ctxt].CodGen;
                    var catNode = root.findChild("id", racine, true);
                    if ( !catNode ) {
                        root.appendChild( nextNode);
                    }
                    else {
                        if (responseArray[Ctxt].ContexteMat == "")
                            nextNode.ctxtMat = catNode.attributes.ctxtMat;
                        catNode.appendChild( nextNode );
                   }
                }
             }
        }
        root.appendChild({ leaf:   true,
                           text:   'Par défaut',
                           id:     'Default' 
        });
    }
};