Declaramos una funcion que recive un callback y un parametro, y retornamos una promesa que contiene un setTimeout que corre el callback y al terminar resuelve la promesa.

const setAsyncTimeout = (cb, timeout = 0) => new Promise(resolve => {
    setTimeout(() => {
        cb();
        resolve();
    }, timeout);
});

Ahora solo corre la funciona síncrona e ingresa el callback y si quieres el tiempo

const doStuffAsync = async () => {
    await setAsyncTimeout(() => {
        // Do stuff
    }, 1000);

    await setAsyncTimeout(() => {
        // Do more stuff
    }, 500);

    await setAsyncTimeout(() => {
        // Do even more stuff
    }, 2000);
};

doStuffAsync();