nodejs の逐次処理について質問です。

上記サイトを参考に、コールバック地獄を回避するために、以下のようなタスク1~3の逐次処理するロジック(タスクの処理結果を次のタスクに渡す)を記載し、希望通りタスク1~3が逐次実行されるのは確認できました。
ですが、js 初心者のため、以下の疑問が出てきましたので質問させていただきました。
(抽象的な質問で申し訳ありません。。。)

(1) このやり方が一般的なのでしょうか?
(2) このやり方での問題点は何かありますでしょうか?
とりあえず動作確認のみ行いました。が、このロジックが正しいかどうかの判断がついていません。

// 何かしらの非同期処理
// この関数では入力パラメータの value に +1 するだけ
// 入力パラメータの error は reject を発生させて、catch() が動作しているか確認用
function async_task(value,error) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      if (error === undefined){
        resolve(value+1);
      }
      else {
        reject(error);
      }
    }, 1000);
  });
}

// var promise = async_task(1,'task1 error'); // 処理1(エラー発生させる場合)
var promise = async_task(1); // 処理1
promise.then( (result) => {
  console.log(`task1 end: result:${result}`);
  return async_task(result); // 処理2
}).then( (result) => {
  console.log(`task2 end: result:${result}`);
  return async_task(result); // 処理3
}).catch( (error) => {
  // どっかでエラーが発生した
  console.log(error);
}).then( (result) => {
  // 最後のまとめ処理
  console.log('complete');
});

以上、宜しくお願いいたします。