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