Rework the SignalProvider stuff to ferret out a deadlock. Doing all the work in a central executor to ensure proper synchronization ordering.