| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
							- 'use strict';
 
- //This file contains the ES6 extensions to the core Promises/A+ API
 
- var Promise = require('./core.js');
 
- module.exports = Promise;
 
- /* Static Functions */
 
- var TRUE = valuePromise(true);
 
- var FALSE = valuePromise(false);
 
- var NULL = valuePromise(null);
 
- var UNDEFINED = valuePromise(undefined);
 
- var ZERO = valuePromise(0);
 
- var EMPTYSTRING = valuePromise('');
 
- function valuePromise(value) {
 
-   var p = new Promise(Promise._61);
 
-   p._65 = 1;
 
-   p._55 = value;
 
-   return p;
 
- }
 
- Promise.resolve = function (value) {
 
-   if (value instanceof Promise) return value;
 
-   if (value === null) return NULL;
 
-   if (value === undefined) return UNDEFINED;
 
-   if (value === true) return TRUE;
 
-   if (value === false) return FALSE;
 
-   if (value === 0) return ZERO;
 
-   if (value === '') return EMPTYSTRING;
 
-   if (typeof value === 'object' || typeof value === 'function') {
 
-     try {
 
-       var then = value.then;
 
-       if (typeof then === 'function') {
 
-         return new Promise(then.bind(value));
 
-       }
 
-     } catch (ex) {
 
-       return new Promise(function (resolve, reject) {
 
-         reject(ex);
 
-       });
 
-     }
 
-   }
 
-   return valuePromise(value);
 
- };
 
- Promise.all = function (arr) {
 
-   var args = Array.prototype.slice.call(arr);
 
-   return new Promise(function (resolve, reject) {
 
-     if (args.length === 0) return resolve([]);
 
-     var remaining = args.length;
 
-     function res(i, val) {
 
-       if (val && (typeof val === 'object' || typeof val === 'function')) {
 
-         if (val instanceof Promise && val.then === Promise.prototype.then) {
 
-           while (val._65 === 3) {
 
-             val = val._55;
 
-           }
 
-           if (val._65 === 1) return res(i, val._55);
 
-           if (val._65 === 2) reject(val._55);
 
-           val.then(function (val) {
 
-             res(i, val);
 
-           }, reject);
 
-           return;
 
-         } else {
 
-           var then = val.then;
 
-           if (typeof then === 'function') {
 
-             var p = new Promise(then.bind(val));
 
-             p.then(function (val) {
 
-               res(i, val);
 
-             }, reject);
 
-             return;
 
-           }
 
-         }
 
-       }
 
-       args[i] = val;
 
-       if (--remaining === 0) {
 
-         resolve(args);
 
-       }
 
-     }
 
-     for (var i = 0; i < args.length; i++) {
 
-       res(i, args[i]);
 
-     }
 
-   });
 
- };
 
- Promise.reject = function (value) {
 
-   return new Promise(function (resolve, reject) {
 
-     reject(value);
 
-   });
 
- };
 
- Promise.race = function (values) {
 
-   return new Promise(function (resolve, reject) {
 
-     values.forEach(function(value){
 
-       Promise.resolve(value).then(resolve, reject);
 
-     });
 
-   });
 
- };
 
- /* Prototype Methods */
 
- Promise.prototype['catch'] = function (onRejected) {
 
-   return this.then(null, onRejected);
 
- };
 
 
  |