toSingleton ensures there is only one underlying Sender running at one time, eventhough many receivers may be connected. After the underlying Sender completed, the next connecting Receiver will start it again. This is in contrast with toShared which requires an explicit reset before it restarts the underlying Sender, simply forwarding the last termination call until that time. This operation is useful if multiple things in your program depend on one single (sub)task running.