こちらは、各.then()の中から次のPromiseオブジェクトを返す方法です。 こちらの方がネストが浅くなり、エラー処理も簡潔になります。

var rosen;

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

// 例4. 直列処理
function btnOnClick() {
  var yuurakucho   = 23036;
  var tokyo        = 22828;
  var ginza        = 22641;
  rosen.setStationMarker(yuurakucho).then(function() {
    alert("ここは有楽町にマーカーが立った後で実行されます。");
    return rosen.setStationMarker(tokyo);   // さらにPromiseオブジェクトを返します
  }).then(function() {
    alert("ここは東京にマーカーが立った後で実行されます。");
    return rosen.setStationMarker(ginza);   // さらにPromiseオブジェクトを返します
  }).then(function() {
    alert("ここは銀座にマーカーが立った後で実行されます。");
    throw "エラーテスト"; // この例外は捕捉されます
  }).catch(function(err) {
    alert("エラーが発生しました(エラーテストなので正常です)");
    console.log(err);
  });
}

window.addEventListener('load', init);