async function $validate () {
    $touch()
    if (mergedConfig.$rewardEarly) {
      $commit()
      // await the watchers
      await nextTick()
    }
    // await the watchers
    await nextTick()
    return new Promise((resolve) => {
      // return whether it is valid or not
      if (!$pending.value) return resolve(!$invalid.value)
      const unwatch = watch($pending, () => {
        resolve(!$invalid.value)
        unwatch()
      })
    })
  }
Executes the validators and returns the result.
@return {Promise<boolean>}