https://www.greatfrontend.com/questions/javascript/promise-merge?practice=practice&tab=coding
Implement a function that accepts two promises and returns a single Promise. This returned promise fulfills when both input promises fulfill, with a single value according to the order and types of the fulfillment values:
The return promise can also be rejected if one of the following happens:
'Unsupported data types'.await promiseMerge(Promise.resolve(1), Promise.resolve(2)); // 3
await promiseMerge(Promise.resolve('abc'), Promise.resolve('def')); // 'abcdef'
await promiseMerge(Promise.resolve([1, 2, 3]), Promise.resolve([4, 5, 6])); // [1, 2, 3, 4, 5, 6]
await promiseMerge(Promise.resolve({ foo: 1 }), Promise.resolve({ bar: 2 })); // { foo: 1, bar: 2}
await promiseMerge(Promise.resolve(1), Promise.resolve([]));
// Rejected with 'Unsupported data types'
await promiseMerge(Promise.reject(1), Promise.resolve(2));
// Rejected with 1