Promise.resolve().then(function() { console.log('starting'); return 123; }).then(function(val) { console.log(val); return val + 1; }).then(function(val) { console.log('starting second step...'); return new Promise(function(resolve) { setTimeout(function() { console.log('finished second step'); resolve(val + 1); }, 500); }); }).then(function() { console.log('done'); }); // starting // 123 // starting second step... // finished second step // done