function allSettled(entries, label) {
	  if (!isArray(entries)) {
	    return Promise.reject(new TypeError("Promise.allSettled must be called with an array"), label);
	  }

	  return new AllSettled(Promise, entries, label).promise;
	}
`RSVP.allSettled` is similar to `RSVP.all`, but instead of implementing
	a fail-fast method, it waits until all the promises have returned and
	shows you all the results. This is useful if you want to handle multiple
	promises' failure states together as a set.
	 Returns a promise that is fulfilled when all the given promises have been
	settled. The return promise is fulfilled with an array of the states of
	the promises passed into the `promises` array argument.
	 Each state object will either indicate fulfillment or rejection, and
	provide the corresponding value or reason. The states will take one of
	the following formats:
	 ```javascript
	{ state: 'fulfilled', value: value }
	  or
	{ state: 'rejected', reason: reason }
	```
	 Example:
	 ```javascript
	let promise1 = RSVP.Promise.resolve(1);
	let promise2 = RSVP.Promise.reject(new Error('2'));
	let promise3 = RSVP.Promise.reject(new Error('3'));
	let promises = [ promise1, promise2, promise3 ];
	 RSVP.allSettled(promises).then(function(array){
	  // array == [
	  //   { state: 'fulfilled', value: 1 },
	  //   { state: 'rejected', reason: Error },
	  //   { state: 'rejected', reason: Error }
	  // ]
	  // Note that for the second item, reason.message will be '2', and for the
	  // third item, reason.message will be '3'.
	}, function(error) {
	  // Not run. (This block would only be called if allSettled had failed,
	  // for instance if passed an incorrect argument type.)
	});
	```
	 @method allSettled
	@static
	@for RSVP
	@param {Array} entries
	@param {String} label - optional string that describes the promise.
	Useful for tooling.
	@return {Promise} promise that is fulfilled with an array of the settled
	states of the constituent promises.