"use strict"; module.exports = function(Promise, PromiseArray) { var PromiseInspection = Promise.PromiseInspection; var util = require("./util.js"); function SettledPromiseArray(values) { this.constructor$(values); this._promise._setIsSpreadable(); } 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(); }; };