フロントエンドjavascriptにおいてpubsubパターンとカスタムイベントの違いがイマイチ分かりません。

個人的な以下のような認識を持っています。

  • pubsubパターン:DOMに依存しない
  • カスタムイベント:DOMに依存、javascriptのイベント特有の処理を行う
  • どちらとも、「トリガーによって起動する処理を登録・実行する」という役割は変わらない

この認識がそもそも正しいのか?
正しくないのであればこの2つの違いはなんなのか?

をご教示お願いします。