Repository: single-spa/single-spa (language: javascript)

Issue:
 window.removeEventListener does not work in sometimes case
**Describe the bug or question**
 window.removeEventListener does not work in my code. i use addEventListener before single-spa start, then single-spa override `window.addEventListener` and `window.removeEventListener` to collect 'hashchange' and 'popstate' event listener.but i use single-spa's `window.removeEventListener` can't  reomve my listener, because i am not use single-spa's `window.addEventListener`.

**To Reproduce**
This is a simple demo.
```typescript
import { start as singleSpaStart } from 'single-spa';
const listener = () => {
  console.log('emit popstate');
};

window.addEventListener('popstate', listener);
singleSpaStart();

window.removeEventListener('popstate', listener);
window.dispatchEvent(new PopStateEvent('popstate', {}));
```

**Expected behavior**
listener fn is be removed, not print "emit popstate" in console

**Screenshots and/or console output**

**Additional context**
![image](https://github.com/single-spa/single-spa/assets/23078182/a9977c93-01a0-412b-8b9a-ab9f62137a9f)
single-spa' removeEventListener only can remove popstate listener if single-spa collect this listener.




Discussion / hints:
i think originalRemoveEventListener should be called in all times，it is safe

Fix patch:
diff --git a/.changeset/fresh-rockets-knock.md b/.changeset/fresh-rockets-knock.md
new file mode 100644
index 00000000..aca3d3d8
--- /dev/null
+++ b/.changeset/fresh-rockets-knock.md
@@ -0,0 +1,5 @@
+---
+"single-spa": patch
+---
+
+Always call native window.removeEventListener
diff --git a/src/navigation/navigation-events.js b/src/navigation/navigation-events.js
index d585ff5e..2db016e2 100644
--- a/src/navigation/navigation-events.js
+++ b/src/navigation/navigation-events.js
@@ -178,7 +178,6 @@ export function patchHistoryApi(opts) {
         capturedEventListeners[eventName] = capturedEventListeners[
           eventName
         ].filter((fn) => fn !== listenerFn);
-        return;
       }
     }
 


Test patch: