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());