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
			}
		}
/*
		 * @param {any} [vResult0]
		 *   The thenable to wrap or the result to synchronously fulfill with
		 */
@param {any} [vResult0]
The thenable to wrap or the result to synchronously fulfill with
@param { any } [ vResult0 ] The thenable to wrap or the result to synchronously fulfill with
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(); 
					reject(vResult0.getResult());
					return;
				} else {
					vResult0.caught(); 
					vResult0 = vResult0.getResult(); 
				}
			}
			iState = 0;
			vResult = vResult0;
			if (hasThen(vResult)) {
				try {
					fnThen = vResult.then;
				} catch (e) {
					reject(e);
					return;
				}
				if (typeof fnThen === "function") {
					call(fnThen.bind(vResult), resolve, reject);
					return;
				}
			}
			iState = 1;
			if (fnResolve) {
				fnResolve(vResult);
				fnReject = fnResolve = null; 
			}
		}
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 ( ) ; reject ( vResult0 . getResult ( ) ) ; return ; } else { vResult0 . caught ( ) ; vResult0 = vResult0 . getResult ( ) ; } } iState = 0 ; vResult = vResult0 ; if ( hasThen ( vResult ) ) { try { fnThen = vResult . then ; } catch ( e ) { reject ( e ) ; return ; } if ( typeof fnThen === "function" ) { call ( fnThen . bind ( vResult ) , resolve , reject ) ; return ; } } iState = 1 ; if ( fnResolve ) { fnResolve ( vResult ) ; fnReject = fnResolve = null ; } }
@param {any} [vResult0]
   The thenable to wrap or the result to synchronously fulfill with
@param { any } [ vResult0 ] The thenable to wrap or the result to synchronously fulfill with
// might have been uncaught so far // make sure it will never count as uncaught // unwrap to access native thenable // 2.3.3.2. If retrieving the property x.then results in a thrown exception e, // reject promise with e as the reason. // be nice to the garbage collector