基本的に、はい、同期です。
ソースからの関連セクションは次のとおりです。
trigger: function(name) {
  if (!this._events) return this;
  var args = slice.call(arguments, 1);
  if (!eventsApi(this, 'trigger', name, args)) return this;
  var events = this._events[name];
  var allEvents = this._events.all;
  if (events) triggerEvents(this, events, args);
  if (allEvents) triggerEvents(this, allEvents, arguments);
  return this;
},
インポート関数はtriggerEventsで、実際にハンドラを呼び出します。コメントによると、これは単なる最適化されたディスパッチャーです。.call()これらはすべてandを呼び出していることに注意してください。その.apply()ため、呼び出し元に制御が返される前にコールバックが完了します。
var triggerEvents = function(obj, events, args) {
    var ev, i = -1, l = events.length;
    switch (args.length) {
    case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx);
    return;
    case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0]);
    return;
    case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0], args[1]);
    return;
    case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0], args[1], args[2]);
    return;
    default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args);
    }
};
ただし、他の人が述べたように、トリガー ハンドラーは、必要に応じて独自のコールバックを自由にスケジュールできます。したがって、ハンドラーが戻る前に作業を終了するかどうかは、ハンドラー コード自体に依存します。