Usually the term `Executor` is used for something you dispatch tasks to (like the spark executor or java's thread pool executor). This seems more like a class that manages the lifecycle of a receiver... what about naming this `NetworkReceieverSupervisor`?

Also - is this made an abstract class for the purpose of testing - or do you expect to have multiple implementations of this?