When fetchJSON failed, load() unconditionally overwrote this.observer with a fresh MutationObserver, leaving any previous one observing the DOM. Repeated load() calls that hit the catch branch leaked one observer per call. Mirror the disconnect-first pattern already used in activate(). Signed-off-by: Émile Ré <emile@probo.com>