Ejecución secuencial dinámica de promesas

Tengo una cantidad dinámica de promesas que necesito ejecutar secuencialmente. Comprendí cómo puedo ejecutar promesas secuenciales, pero no logro hacerlo dinámico con una serie de promesas que pueden variar.

Aquí hay una manera que encontré de hacerlo estáticamente ¿Cómo resolver las promesas una tras otra? :

function waitFor(timeout) {
	return new Promise(function(resolve, reject) {
		setTimeout(function() {
			resolve(`Finished waiting ${timeout} milliseconds`);
		}, timeout);
	});
}

waitFor(1000).then(function(result) {
	$('#result').append(result+' @ '+(new Date().getSeconds())+'<br>');
    return waitFor(2000);
}).then(function(result) {
    $('#result').append(result+' @ '+(new Date().getSeconds())+'<br>');
    return waitFor(3000);
}).then(function(result) {
	$('#result').append(result+' @ '+(new Date().getSeconds())+'<br>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div id="result"></div>

Me gustaría hacer lo mismo, pero en lugar de 3 promesas anidadas, me gustaría tener cualquier número que desee. Me puedes ayudar

¡¡Muchas gracias!

Respuestas a la pregunta(4)

Su respuesta a la pregunta