Cómo ejecutar después de que se resuelvan todas las promesas de javascript ES6

Estoy en el proceso de reemplazar un código antiguo que usaba objetos jQuery diferidos y estoy reescribiendo usando Bluebird / ES6 Promises.

Si tengo varias llamadas asincrónicas, ¿cómo puedo activar una función después de que se resuelvan todas las promesas?

Usando jQuery Deferreds sería algo como esto:

var requests = [...]; //some arbitrary data that is iterated to generate multiple ajax requests
var promises = [];
resuests.forEach(function(endpoint) {
    promises.push($.ajax({url: endpoint}));
});

$.when.apply($, promises).then(function() {
    alert('all promises complete!');
});

¿Cómo reescribo esto usando la sintaxis de ES6 Promise?

Respuestas a la pregunta(2)

Su respuesta a la pregunta