whole_func_string: function NewPromiseCapability(C) {
    if (C === GlobalPromise) {
      // Optimized case, avoid extra closure.
      var promise = PromiseInit(new GlobalPromise(promiseRawSymbol));
      var callbacks = CreateResolvingFunctions(promise);
      return {
        promise: promise,
        resolve: callbacks.resolve,
        reject: callbacks.reject
      };
    }
  
    var result = {promise: UNDEFINED, resolve: UNDEFINED, reject: UNDEFINED };
    result.promise = new C((resolve, reject) => {
      if (!IS_UNDEFINED(result.resolve) || !IS_UNDEFINED(result.reject))
          throw MakeTypeError(kPromiseExecutorAlreadyInvoked);
      result.resolve = resolve;
      result.reject = reject;
    });
  
    if (!IS_CALLABLE(result.resolve) || !IS_CALLABLE(result.reject))
        throw MakeTypeError(kPromiseNonCallable);
  
    return result;
  }
func_code_string: function NewPromiseCapability(C) {
    if (C === GlobalPromise) {
      // Optimized case, avoid extra closure.
      var promise = PromiseInit(new GlobalPromise(promiseRawSymbol));
      var callbacks = CreateResolvingFunctions(promise);
      return {
        promise: promise,
        resolve: callbacks.resolve,
        reject: callbacks.reject
      };
    }
  
    var result = {promise: UNDEFINED, resolve: UNDEFINED, reject: UNDEFINED };
    result.promise = new C((resolve, reject) => {
      if (!IS_UNDEFINED(result.resolve) || !IS_UNDEFINED(result.reject))
          throw MakeTypeError(kPromiseExecutorAlreadyInvoked);
      result.resolve = resolve;
      result.reject = reject;
    });
  
    if (!IS_CALLABLE(result.resolve) || !IS_CALLABLE(result.reject))
        throw MakeTypeError(kPromiseNonCallable);
  
    return result;
  }
func_documentation_string: ES#sec-newpromisecapability NewPromiseCapability ( C )