Nlk,
как я понимаю последовательность ...
const data = [
{ms : 5000, fn : () => console.log("1")},
{ms : 4000, fn : () => console.log("2")},
{ms : 1000, fn : () => console.log("3")},
{ms : 4000, fn : () => console.log("4")},
{ms : 2000, fn : () => console.log("5")}
];
data.reduce((promise, item) => {
const {ms, fn} = item;
return promise.then(() => new Promise((resolve, reject) => {
setTimeout(()=> (fn(),resolve()), ms)
}));
}, Promise.resolve());