Keep SignalManager map iterable
We need the SignalManager map to be iterable on shutdown for !1349 (merged), but WeakMap
s are not iterable. This basically replaces !2450 (merged) with an earlier version of that MR that did not depend on the use of WeakMap
.