Nesting callbacks for more than two tasks

It is possible to determine the order of TWO tasks using callbacks, as shown below.

a(b);

function a(callback) {
   // do something
   callback();
}

function b() {
   // do next
}

See Fiddle

First do a(), then do b().

I would like to concatenate more than two tasks. As I´m dealing with quite big functions, I´m looking for something like that:

a(b(c));

First do a(), then do b(), then do c(). However I'm not successful with this. See Fiddle

Is there an easy way to do so, maybe without needing Promises?

You're calling b immediately, not passing a callback to a. You'll need to use a function expression:

a(function(aResult) {
    b(c);
});

Of course, you can avoid these by returning closures from all your functions:

function a(callback) {
    return function(args) {
        // do something
        if (callback) callback(res);
    };
}
function b(callback) {
    return function(aResult) {
        // do next
        if (callback) callback(res);
    };
}
function c(callback) {
    return function(bResult) {
        // do next
        if (callback) callback(res);
    };
}

which you would call like this:

a(b(c())();

(this is known as pure continuation passing style)