anchor.diff:        let duplicates = lazy duplicatedNames tests
         if config.allowDuplicateNames || List.isEmpty duplicates.Value then
           match config.stress with
  -        | None -> runEval config tests |> Async.RunSynchronously
  -        | Some _ -> runStress config tests |> Async.RunSynchronously
  +        | None -> runEvalWithCancel ct config tests |> Async.RunSynchronously
  +        | Some _ -> runStressWithCancel ct config tests |> Async.RunSynchronously
         else
           logger.errorWithBP (
             eventX "Found duplicated test names, these names are: {duplicates}"
             >> setField "duplicates" duplicates.Value
           ) |> Async.RunSynchronously
           1
  +  /// Runs tests with the supplied config.
  +  /// Returns 0 if all tests passed, otherwise 1
  +  let runTests config tests =
  +    runTestsWithCancel CancellationToken.None config tests
   
     /// Runs all given tests with the supplied command-line options.
     /// Returns 0 if all tests passed, otherwise 1
  -  let runTestsWithArgs config args tests =
  +  let runTestsWithArgsAndCancel (ct:CancellationToken) config args tests =
       match ExpectoConfig.fillFromArgs config args with
       | ArgsException (usage,message) ->
         printfn "%s\n" message
  
positive.code: 
    /// Runs tests with the supplied config.
    /// Returns 0 if all tests passed, otherwise 1
    let runTests config (tests:Test) =
      Global.initialiseIfDefault
        { Global.defaultConfig with
            getLogger = fun name -> LiterateConsoleTarget(name, config.verbosity, consoleSemaphore = Global.semaphore()) :> Logger }
  
negative.code:           |> List.sortBy (List.length >> (~-))
            |> List.map (
                function
                | [test] -> Async.map List.singleton test
                | l -> Async.foldSequentiallyWithCancel ct cons [] l
              )
  
          let! parallelResults =
  