anchor.diff:                              Some (parseResults, checkFileResults)
                   }
   
  -            let! worker = Async.StartChild(parseAndCheckFile, millisecondsTimeout=Settings.LanguageServicePerformance.TimeUntilStaleCompletion)
  -        
  -            let tryGetFreshResultsWithTimeout() : Async<CheckResults> =
  +            let tryGetFreshResultsWithTimeout() =
                   async {
  +                    let! worker = Async.StartChild(parseAndCheckFile, millisecondsTimeout=Settings.LanguageServicePerformance.TimeUntilStaleCompletion)
                       try
  -                        let! result = worker 
  -                        return Ready result
  +                        return! worker
                       with :? TimeoutException ->
  -                        return StillRunning worker
  +                        return None // worker is cancelled at this point, we cannot return it and wait its completion anymore
                   }
   
               let bindParsedInput(results: (FSharpParseFileResults * FSharpCheckFileResults) option) =
  
positive.code:                     
                  let! results =
                      match freshResults with
                      | Ready x -> async.Return x
                      | StillRunning worker ->
                          async {
                              match checker.TryGetRecentCheckResultsForFile(filePath, options) with
                              | Some (parseResults, checkFileResults, _) ->
                                  return Some (parseResults, checkFileResults)
                              | None ->
                                  return! worker
                          }
                  return bindParsedInput results
              else 
                  let! res = worker
                  return bindParsedInput res
          }
  
  
  
negative.code: open Microsoft.FSharp.Compiler.Ast
  open Microsoft.FSharp.Compiler.SourceCodeServices
  
  type FSharpChecker with
      member checker.ParseDocument(document: Document, parsingOptions: FSharpParsingOptions, sourceText: string, userOpName: string) =
          asyncMaybe {
  