code: function trycatchit(tryFn, that, args) {
    try {
      // Avoid slow apply for common use
      switch(args ? args.length : 0) {
      case 0:
        tryFn.call(that)
        break
      case 1:
        tryFn.call(that, args[0])
        break
      case 2:
        tryFn.call(that, args[0], args[1])
        break
      case 3:
        tryFn.call(that, args[0], args[1], args[2])
        break
      case 4:
        tryFn.call(that, args[0], args[1], args[2], args[3])
        break
      case 5:
        tryFn.call(that, args[0], args[1], args[2], args[3], args[4])
        break
      case 6:
        tryFn.call(that, args[0], args[1], args[2], args[3], args[4], args[5])
        break
      case 7:
        tryFn.call(that, args[0], args[1], args[2], args[3], args[4], args[5], args[6])
        break
      case 8:
        tryFn.call(that, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7])
        break
      case 9:
        tryFn.call(that, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8])
        break
      default:
        tryFn.apply(that, args)
      }
    } catch(err) {
      return err
    }
  }
docs: To avoid V8 deopt