anchor.diff:          with e ->
               let msg = if e <> null then e.ToString() else "<null>"
               Logger.logf "ERROR" "Parsing response failed: %O" [| e |]
  -            return failwith ("Parsing response failed: " + msg) }
  +            return (unbox null) }
   
       let isRunning () = service.IsSome
   
  
positive.code:             return failwith "Eval returned unexpected result" }
  
      let cancel () = async {
          let! res = request<Result<unit>> (url "cancel") None 
          if res.result <> "cancel" then Logger.logf "ERROR" "Received unexpected response for 'cancel': %O" [| res |] }
  
      let output () = async {
          let! res = request<Result<unit>> (url "output") None 
          if res.result <> "output" then Logger.logf "ERROR" "Received unexpected response for 'output': %O" [| res |] 
          return res.output }
  
      let start () =
          try
              let pth = 
                  if Process.isWin () then @"\ionide-fsi\bin\FsInteractiveService.exe"
                  else @"/ionide-fsi/bin/FsInteractiveService.exe"
              let location = Globals.atom.packages.packageDirPaths.[0] + pth
  
negative.code: 
  type EvalDetails =
    { string : string
      html : string
      warnings : TypeCheckError[] }
  
  type EvalRequest =
    { file : string
      line : int
      code : string }
  
  /// Wrapper that discriminates based on Result.result
  type EvaluationResult =
    | Error of Result<TypeCheckError[]>
    | Exception of Result<string>
    | Success of Result<EvalDetails>
  