“use strict”; module.exports =

function(Promise, PromiseArray) {

var PromiseInspection = Promise.PromiseInspection; var util = require(“./util.js”);

function SettledPromiseArray(values) {

this.constructor$(values);

} util.inherits(SettledPromiseArray, PromiseArray);

SettledPromiseArray.prototype._promiseResolved = function (index, inspection) {

this._values[index] = inspection;
var totalResolved = ++this._totalResolved;
if (totalResolved >= this._length) {
    this._resolve(this._values);
}

};

SettledPromiseArray.prototype._promiseFulfilled = function (value, index) {

var ret = new PromiseInspection();
ret._bitField = 268435456;
ret._settledValue = value;
this._promiseResolved(index, ret);

}; SettledPromiseArray.prototype._promiseRejected = function (reason, index) {

var ret = new PromiseInspection();
ret._bitField = 134217728;
ret._settledValue = reason;
this._promiseResolved(index, ret);

};

Promise.settle = function (promises) {

return new SettledPromiseArray(promises).promise();

};

Promise.prototype.settle = function () {

return new SettledPromiseArray(this).promise();

}; };