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