I fixed it up

const wait = (ms) => {
     return new Promise((resolve, reject) => {
          setTimeout(resolve, ms)
     })
}

const animDict = async (dict) => {
     RequestAnimDict(dict)
     while (!HasAnimDictLoaded(dict)) {
          await wait(10)
     }
}

const animation = async () => {
     console.log('Animation from js')
     await animDict('mp_character_creation@lineup@male_a')
     await wait(100)
     TaskPlayAnim(PlayerPedId(), 'mp_character_creation@lineup@male_a', 'intro', 1.0, 1.0, 5900, 0, 1, 0, 0, 0)
     await wait(5700)
     await animDict('mp_character_creation@customise@male_a')
     await wait(100)
     TaskPlayAnim(PlayerPedId(), 'mp_character_creation@customise@male_a', 'loop', 1.0, 1.0, -1, 0, 1, 0, 0, 0)
}

RegisterCommand('animjs', animation, false)

but it’s still the same but the same code in Lua works fine if you can find any other mistakes it will be appreciated