Found during review of PR #323 (pre-existing, not introduced there). The _onDispose() call at src/directives/http.js:~633 (sentinel disposal registration) runs inside the async response handler, where the module-level _currentEl used by _onDispose (globals.js:~278) may already point at a different element — registering the cleanup on the wrong element's disposer list. PR #323 worked around the same hazard for its MutationObserver by pushing directly to el.__disposers (with justification comment); the sentinel registration should get the same treatment. Audit http.js for any other _onDispose calls inside async continuations while at it.
Found during review of PR #323 (pre-existing, not introduced there). The
_onDispose()call at src/directives/http.js:~633 (sentinel disposal registration) runs inside the async response handler, where the module-level_currentElused by_onDispose(globals.js:~278) may already point at a different element — registering the cleanup on the wrong element's disposer list. PR #323 worked around the same hazard for its MutationObserver by pushing directly toel.__disposers(with justification comment); the sentinel registration should get the same treatment. Audit http.js for any other _onDispose calls inside async continuations while at it.