JSFiddle - React, Tailwind, and code Playground

JavaScript

function get(a, b, c, t) {
		return $.Deferred(function(dfrd) {
			setTimeout(function() {
				dfrd.reject(a, b, c);
			}, t);
		});
	}
	
	var p1 = Promise.resolve(get('A','B','C',1000).then(
		function(a, b, c) { return { a:a, b:b, c:c }; },
		function(a, b, c) { return { a:a, b:b, c:c }; }
	)); // voila 1!
	var p2 = Promise.resolve(get('X','Y','Z',2000).then(
		function(a, b, c) { return { a:a, b:b, c:c }; },
		function(a, b, c) { return { a:a, b:b, c:c }; }
	)); // voila 2!
	var p3 = Promise.all([p1, p2]).then(
		function(results) { console.dir(results); },
		function(results) { console.dir(results); }
	);

	var p1 = get('A','B','C',1000).then(
		function(a, b, c) { return { a:a, b:b, c:c }; },
		function(a, b, c) { return { a:a, b:b, c:c }; }
	); // voila 1!
	var p2 = get('X','Y','Z',2000).then(
		function(a, b, c) { return { a:a, b:b, c:c }; },
		function(a, b, c) { return { a:a, b:b, c:c }; }
	); // voila 2!
	var p3 = Promise.resolve($.when(p1, p2).then(function() {
		return [].slice.call(arguments);
	})).then(
		function(results) { console.dir(results); },
		function(results) { console.dir(results); }
	);