const race = (milliseconds, ...promises) => {
const timeout = new Promise((resolve, reject) => {
setTimeout(() => reject(`Limit operation excedded (limit: ${milliseconds} ms)`), milliseconds)
})
return Promise.race([timeout, ...promises])
}
const promise1 = setTimeout(() => new Promise((resolve, reject) => resolve('promise1')), 2000)
const promise2 = setTimeout(() => new Promise((resolve, reject) => resolve('promise2')), 3000)
race(500, promise1, promise2).catch(err => console.log(err)) // -> `Limit operation excedded (limit: 500 ms)`