Можешь объяснить, как работает паттерн обмена сообщениями Publish/Subscribe (Pub/Sub) в JavaScript, и описать ключевые отличия между ним и традиционным паттерном Observer? — ДейлиПреп