Chaining async functions of a module without Promises
You're basically starting to rewriting promises. I think there are pros and cons:

For your solution:


Its a little simpler. I would have created a wrapper function around queue.push to make it clearer and easier to modify. You could also make this into a re-usable base class. Lastly, I'm not sure why you create and refer to me everywhere instead of just referring to SCOPE.
It's your own code so if it doesn't do what you want you can change it.
You don't need to wait/hope someone will implement a feature you need.


For promises:


Promises has more functionality (Promise.all, catch, race) and you can have multiple thens attached to a promise.
Thousand's of people have reviewed the Promise code for bugs.
Other developers will know what promises are but have to learn your code.