Promise Merge

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:

Examples

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

My Solution

Editorial