'use strict'; 
 | 
var aCallable = require('../internals/a-callable'); 
 | 
  
 | 
var $TypeError = TypeError; 
 | 
  
 | 
var PromiseCapability = function (C) { 
 | 
  var resolve, reject; 
 | 
  this.promise = new C(function ($$resolve, $$reject) { 
 | 
    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor'); 
 | 
    resolve = $$resolve; 
 | 
    reject = $$reject; 
 | 
  }); 
 | 
  this.resolve = aCallable(resolve); 
 | 
  this.reject = aCallable(reject); 
 | 
}; 
 | 
  
 | 
// `NewPromiseCapability` abstract operation 
 | 
// https://tc39.es/ecma262/#sec-newpromisecapability 
 | 
module.exports.f = function (C) { 
 | 
  return new PromiseCapability(C); 
 | 
}; 
 |