GitHub Copilot reviewed #2268 and pointed out that we apparently do not Dispose the Timer objects we create.
Since this wasn't actually new code—this has been in Rx for years, and has simply moved in this PR—that PR did not seem the right place to address this.
On the face of it, Copilot seems to be correct, but the code handling teardown is complex due to multithreading issues, so it needs a closer look.