code: func (l *State) call(function int, resultCount int, allowYield bool) {
  	if l.nestedGoCallCount++; l.nestedGoCallCount == maxCallCount {
  		l.runtimeError("Go stack overflow")
  	} else if l.nestedGoCallCount >= maxCallCount+maxCallCount>>3 {
  		l.throw(ErrorError) // error while handling stack error
  	}
  	if !allowYield {
  		l.nonYieldableCallCount++
  	}
  	if !l.preCall(function, resultCount) { // is a Lua function?
  		l.execute() // call it
  	}
  	if !allowYield {
  		l.nonYieldableCallCount--
  	}
  	l.nestedGoCallCount--
  }
docs: // Call a Go or Lua function. The function to be called is at function.
  // The arguments are on the stack, right after the function. On return, all the
  // results are on the stack, starting at the original function position.