I have one array of promises that each one execute a code that can have a javascript error and break the script. I need to check for each promise and catch any error. The problem is that the promise has timeout functions inside. Is there anyway to solve this?
Example code:
function apiRequest(url,customError) {
  return new Promise(function (resolve, reject) {
    if(customError) {
        setTimeout(() => {
            //Force error
            var ar = url.asdasd.eadasd;
            ar = ar.split('123')
        },3000)
    }
    if (url) {
        return resolve(url);
    } else {
        return reject('apiRequest failed!');
    }
})
.catch(function(err){
    return 'error on javascript code';
});
}
var p1 = apiRequest('urlOne',true);
var p2 = apiRequest(false,false);
var p3 = apiRequest('urlThree');
Promise.all([p1, p2, p3])
   .then(function(res){
       console.log('Promise.all', res);
   }, error => {
       console.log('Error on reject')
   })
   .catch(function(err){
       console.error('err', err);
   });
Result:
  Promise.all [ 'urlOne', 'error on javascript code', 'urlThree' ]
  var ar = url.asdasd.eadasd;
  TypeError: Cannot read property 'eadasd' of undefined
If there is an error inside each promise, my code can catch it but if there is a timeout and the error happends after the promise finish I cant catch it and my code breaks, is there anyway to catch this error?
 
    