function wait(num){ return new Promise((resolve, reject) => { setTimeout(() => { console.log(num); if(num === 2){ reject(num); } else { resolve(num); } }, 1000); }); } wait(0).then(num => { num++; return wait(num); }).then(num => { num++; return wait(num); }).then(num => { num++; return wait(num); }).then(num => { num++; return wait(num); }).catch(num => { num++; console.error(num, "error"); })