anchor.diff:        WorkerMonitor      : WorkerManager
         ProcessMonitor     : ProcessManager }
   
  -type internal WorkerMessage =
  +type private WorkerMessage =
       | Start of WorkerConfig  * AsyncReplyChannel<unit>
       | Update of WorkerConfig * AsyncReplyChannel<unit>
       | Stop of AsyncReplyChannel<unit>
  
positive.code:                 match message, state with
                  | None, Running(config, _) ->
                      if config.WorkerMonitor.ActiveJobs >= config.MaxConcurrentJobs then
                          return! workerLoop state
                      else
                          let! job = Async.Catch <| config.State.TryDequeue()
  
negative.code:                             do! Async.Sleep onErrorWaitTime
                              return! workerLoop state
                  | None, Idle -> 
                      do! Async.Sleep receiveTimeout
                      return! workerLoop state
                  | Some(Start(config, handle)), Idle ->
                      return! workerLoop(Running(config, handle))
  