function all(promises) {
			return traverseWith(snd, null, promises);
		}
Return a promise that will fulfill when all promises in the
input array have fulfilled, or will reject when one of the
promises rejects.
@param {array} promises array of promises
@returns {Promise} promise for array of fulfillment values