Hi,
When I discovered your library, I was puzzled by the presence of destroyBadge().
Then, I saw that it was only used to call removeEventListener().
You can eliminate this call if you pass {once: true} to addEventListener().
Extract from MDN:
once Optional
A boolean value indicating that the listener should be invoked at most once after being added. If true, the listener would be automatically removed when invoked. If not specified, defaults to false.
Let me know if I should open a PR.
Best regards,
Benoit