A satisfying little rant from Justin Fagnani: Stop Using CustomEvent.
One point is that you’re forcing the consumer of the event to know that it’s custom and you have to get data out of the details property. Instead, you can subclass Event with new properties and the consumer of that event can pull that data right off the event itself.
