直列処理(処理を順番に実行する)の書き方には大きく2通りあります。 このサンプルはrosen.setStationMarker().then()をネストさせていく書き方で、単純な例なら分かりやすいですが、ネストが深くなると 可読性が低くなり、エラー処理も煩雑になります。ある意味Promiseの利点を活かせない書き方です。

var rosen;

function init() {
  rosen = new Rosen("map", {
    apiKey: "2jr5nchcswemrfjj67jvjaqu",  // アクセスキーはサンプル用です。実際にご利用されるときは書き換えてください。
  });
}

// 例3. 直列処理
function btnOnClick() {
  var yuurakucho   = 23036;
  var tokyo        = 22828;
  var ginza        = 22641;
  rosen.setStationMarker(yuurakucho).then(function() {
    alert("ここは有楽町にマーカーが立った後で実行されます。");
    rosen.setStationMarker(tokyo).then(function() {
      alert("ここは東京にマーカーが立った後で実行されます。");
      rosen.setStationMarker(ginza).then(function() {
        alert("ここは銀座にマーカーが立った後で実行されます。");
        throw "エラー"; // この例外は捕捉されません。補足するには、すぐ外側に.catch()をつける必要があります
      });
    });
  }).catch(function(err) {
    alert("エラーが発生しました");
  });
}

window.addEventListener('load', init);