fs.readFile(fileName, function(err, data) { if (err) { // onError }else{ // onSuccess } }) のような形式なので、逐次的に処理を行うとその分だけネストの階層が増えてしまいます。これを解消するために使われるのがPromiseです。上記に対応するコードは以下のようになります。 new Promise(function(onFulfilled, onRejected){ fs.readFile(fileName, function(err, data) { if (err) { onRejected(err); }else{ onFulfilled(data); } }) }) .then(function(data){ // onSuccess }, function(err){ // onError })