This isn't strictly safe, because `schedulingDisposable` isn't set atomically, and the scheduled block may try to read it while it's being written.

I ran into this problem in RxHaskell (which is what prompted me to open the issue), and I honestly just gave up trying to use disposables for the scheduling there. The scheduled block doesn't really do any work that _needs_ to be canceled, and disposing of a subscription to this signal will still prevent any delayed event delivery from reaching the subscriber.