Background thread that owns the data source.
Polling (and, for remote sources, waiting on the network) happens off the UI thread so that input stays responsive. The UI sends Commands and receives Events over channels.
Command
Event