The rule of thumb to avoid resource leaks is that you should never call ObservableScope methods in a callback unless the ObservableScope is directly passed to or created inside that callback. I had a go at codifying this as a lint rule.
This implements the new ringing UI by showing a placeholder tile for the participant being dialed, rather than an overlay.