¿Cuándo alguien necesitaría crear un diferido?

En general, parece que ahora se desaconseja la creación de objetos diferidos a favor del uso del constructor Promise de estilo ES6. ¿Existe una situación en la que sería necesario (o mejor de alguna manera) usar un diferido?

Por ejemplo, enesta página, el siguiente ejemplo se da como justificación para usar un diferido:

function delay(ms) {
    var deferred = Promise.pending();
    setTimeout(function(){
        deferred.resolve();
    }, ms);
    return deferred.promise;
}

Sin embargo, esto podría hacerse igual de bien con el constructor Promise:

function delay(ms) {
    return new Promise(function(resolve, reject){
        setTimeout(function(){
            resolve();
        }, ms);
    });
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta