Async.UnixSourceBasic abstraction for a worker.
A task
If running, wait for a task to finish and return its outcome.
If not running, return the oucome of the task.
If running, refresh the status of the task, without blocking.
If not running, return the oucome of the task.