例えば、クリックイベントがshadow DOMの <user-card> コンポーネント内で発生したとします。しかしメインドキュメント内のスクリプトはshadow DOM内部については何も知りません。特にコンポーネントがサードパーティライブラリから来たものである場合はなおさらです。
遅延ゼロの setTimeout でラップすることで実現できます。 チャプター info:dispatch-events で見た例: カスタムイベント menu-open は setTimeout でディスパッチされるため、このイベントは "click" イベントが完全に処理された後に発生します。