Как преобразовать существующий API обратного вызова в обещания?

Я хочу работать с обещаниями, но у меня есть API обратного вызова в таком формате:

1. Загрузка DOM или другое одноразовое событие:
window.onload; // set to callback
...
window.onload = function() {

};
2. Простой обратный вызов:
function request(onChangeHandler) {
    ...
}
request(function() {
    // change happened
    ...
});
3. Обратный вызов стиля узла («nodeback»):
function getStuff(dat, callback) {
    ...
}
getStuff("dataParam", function(err, data) {
    ...
})
4. Целая библиотека с обратными вызовами в стиле узла:
API;
API.one(function(err, data) {
    API.two(function(err, data2) {
        API.three(function(err, data3) {
            ...
        });
    });
});
Как мне работать с API в обещаниях, как его «обещать»?

Ответы на вопрос(17)

Ваш ответ на вопрос