Deferrals Typescript bug

Hello.
I’m creating a connection script using typescript and now i have a strange problem.
when i call deferrals.done() without any message it does not allow a player to connect to the server.
Here’s the code

private static async onPlayerConnecting( src : string, name :string, setKickReason :any, deferrals :any) : Promise<void> {
deferrals.defer()
      deferrals.update(`Checking STEAM ID`)


      await Delay(1000)

      const ids : Record<string, string> = {}

      const idsArray = []

      for (let i = 0; i < GetNumPlayerIdentifiers(src); i++) {
        const d = GetPlayerIdentifier(src, i)
        const [key, value] = d.split(':')
        ids[key] = value
        idsArray.push(d)
      }

      if(!ids.steam) {
        deferrals.done("No STEAM ID")
      }
      deferrals.update(`Checking DISCORD ID`)

      await Delay(1000)

      if(!ids.discord) {
        deferrals.done("No DISCORD ID")
      }

      deferrals.update(`Checking GTA 5 licenses`)

      await Delay(1000)

      if(!ids.license || !ids.license2) {
        deferrals.done("An error occurred while checking GTA 5 licenses")
      }


      const base = <Base>YRP.EXT['Base']

      deferrals.update('Checking account')

      const userId = await base.getUserIDByIdentifiers(idsArray)


      if(userId > 0) {
        const {whitelisted, banned} = await base.checkWhiteListAndBanned(userId)
        if(banned) {
          deferrals.done(`You have been banned. Your ID : ${userId}`)
        }else  {
          if(base.cfg.whitelist && !whitelisted) {
            deferrals.done(`You are not whitelisted. Your ID : ${userId}`)
          }else {
            const prevUser = User.findById(userId)

            if(prevUser) {
              prevUser.destroy(true)
            }
            new User(src, userId, ids.steam)
            deferrals.done()
          }
        }
      }else {
        const id = await base.createUser(idsArray)
        new User(src, id, ids.steam)
        deferrals.done()
      }
}

For some reason it gets stuck at this


but if i pass a message to deferrals.done() method it works

 const prevUser = User.findById(userId)

            if(prevUser) {
              prevUser.destroy(true)
            }
            new User(src, userId, ids.steam)
            deferrals.done('test done')


any help will be appreciated

I don’t know if this will help, but when something similar happened to me, I put a Wait after the last update and it stopped happening.

thanks. it realy worked

1 Like