anchor.diff:      
       /// Asynchronously starts the service with specified configuration
       member this.StartAsync() : Async<unit> = async {
  -        if not <| setStarting() then invalidOp "MBrace.Azure.Service is already running."
  +        if not <| trySetStarting() then invalidOp "MBrace.Azure.Service is already running."
           try
               let sw = Stopwatch.StartNew()
               attacheableLogger.LogInfof "Starting MBrace.Azure.Service %A" workerId
  
positive.code: 
      /// Asynchronously stops the worker service
      member this.StopAsync ()  : Async<unit> = async {
          if not <| setStopping() then invalidOp "MBrace.Azure.Service is not running."
          try
              attacheableLogger.LogInfof "Stopping Service %A." workerId
              subscription |> Option.iter (fun s -> s.Dispose())
              cancellationTokenSource |> Option.iter (fun c -> c.Cancel())
              subscription <- None
              cancellationTokenSource <- None
              status <- 0
              attacheableLogger.LogInfof "Service %A stopped." workerId
          with e ->
              subscription |> Option.iter (fun sub -> try sub.Dispose() with _ -> ())
              subscription <- None
              status <- 0
              attacheableLogger.LogErrorf "Service Stop for %A failed with %A" this.Id e
              return! Async.Raise e
      }
  
negative.code:         with e ->
              subscription |> Option.iter (fun sub -> try sub.Dispose() with _ -> ())
              subscription <- None
              status <- int ServiceStatus.Stopped
              attacheableLogger.LogErrorf "Service Start for %A failed with %A" this.Id e
              return! Async.Raise e
      }
  