dojo/Deferred chaining mechanism not respecting async call

http://stackoverflow.com/questions/13401204/dojo-deferred-chaining-mechanism-not-respecting-async-call

HTML

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/claro/claro.css">

JavaScript

require([
    "dojo/parser",
    "dojo/Deferred"
], function(parser, Deferred) {
    
    console.log("here");
    var deferred;
    
    var pseudoStore = {
        getJsonData: function() {
            /*
            return xhr(this.handlerUrl, {
                handleAs: "json",
                method: "POST",
                data: {
                    action: "getJsonData"
                }
            })
            */
            // I'm simulating the xhr request
          deferred = new Deferred();
          return deferred;
        }
    };
    
    var editOptionsDialog_fetchData = function(id, fieldName) {
        // do the logic to determine which store you wanted.
        var store = pseudoStore;
        var deferred1 = store.getJsonData();
        var deferred2 = new Deferred();
        
        deferred1.then(function(data) {
            store.data = data.items;
            deferred2.resolve(store); 
        });
        
        return deferred2;
    }
    
    
    var openEditor = function(id, fieldName) {
        editOptionsDialog_fetchData(id, fieldName)
            .then(function(store){
              console.log("done!");
            });
         console.log("leaving openEditor!");
    }
    
    openEditor();
    deferred.resolve({items: []}); // simulate the xhr request returning
});