code: function resolve(vResult0) {
  			var fnThen;
  
  			if (vResult0 === that) {
  				reject(new TypeError("A promise cannot be resolved with itself."));
  				return;
  			}
  			if (vResult0 instanceof SyncPromise) {
  				if (vResult0.isFulfilled()) {
  					resolve(vResult0.getResult());
  					return;
  				} else if (vResult0.isRejected()) {
  					vResult0.caught(); // might have been uncaught so far
  					reject(vResult0.getResult());
  					return;
  				} else {
  					vResult0.caught(); // make sure it will never count as uncaught
  					vResult0 = vResult0.getResult(); // unwrap to access native thenable
  				}
  			}
  
  			iState = 0;
  			vResult = vResult0;
  			if (hasThen(vResult)) {
  				try {
  					fnThen = vResult.then;
  				} catch (e) {
  					// 2.3.3.2. If retrieving the property x.then results in a thrown exception e,
  					// reject promise with e as the reason.
  					reject(e);
  					return;
  				}
  				if (typeof fnThen === "function") {
  					call(fnThen.bind(vResult), resolve, reject);
  					return;
  				}
  			}
  			iState = 1;
  			if (fnResolve) {
  				fnResolve(vResult);
  				fnReject = fnResolve = null; // be nice to the garbage collector
  			}
  		}
docs: /*
  @param {any} [vResult0]
  The thenable to wrap or the result to synchronously fulfill with