I am Using q package for converting my js code from async to sync. I dont know whether my understanding is right or not. i have written the below Snippet
var Q = require('q')
function onMessage() {
    console.log("Before calling Q.fncall");
    Q.fcall(processMessage)
        .then(function () {
            console.log("processMessage execution compleated");
        })
        .done();
    console.log("Calling Q.fncall Compleated");
    return true;
}
function processMessage() {
    var defer = Q.defer();
    console.log("processMessage Entered");
    setTimeout(function () {
        console.log("processMessage processed");
        defer.resolve();
        console.log("processMessage defer Resolved");
    }, 10)
    console.log("ProcessMessage Before Exit");
    return defer.promise;
}
onMessage()The output of the code is ::::
Before calling Q.fncall
Calling Q.fncall Compleated
processMessage Entered
ProcessMessage Before Exit
processMessage processed
processMessage defer Resolved
processMessage execution compleated
But my expectation is to get ::::
Before calling Q.fncall
processMessage Entered
ProcessMessage Before Exit
processMessage processed
processMessage defer Resolved
processMessage execution compleated
Calling Q.fncall Compleated
Is there any thing that i was missing or how can this be achieved....
 
    