void ITaskAgent <R> .Resume() => ComputationAgent.Resume();
void ITaskAgent <R> .Pause() => ComputationAgent.Pause();
public IEnumerable <R> Compute() => from result in ComputationAgent.Compute() let payload = Publish(result) where payload.IsSome() select payload.Require();
void ITaskAgent <R> .Stop() => ComputationAgent.Stop();
public void Dispose() => ComputationAgent.Dispose();