Protect Observers from invalidating themselves during observation
When key actions occur, Observers are iterated and called to react to these actions. Some Observer instances have been written to remove other Observer instances, potentially invalidating the internal map of Observers while iterating the map. This update caches requests to delete Observer instances when Observers are observing actions, instead executing them after the map has been fully iterated.
Backport: release
Edited by T.J. Corona