anchor.diff:  let default_post_data_parse_fail =
     RequestErrors.BAD_REQUEST "Unable to parse post data"
   
  -let do_map_json f json_parse_fail =
  -  Types.request(fun r ->
  -    match try_parse_json r with
  -    | Some requestJson, _ -> json_success(f requestJson)
  -    | None, str -> json_parse_fail str)
  -
   let do_map_json_async (f: 'a -> Async<'b>) json_parse_fail: Types.WebPart =
     fun http_context ->
       async {
  
positive.code:       post_data_parse_fail
      ]
  
  let map_json' (f: 'a -> 'b) post_data_parse_fail json_parse_fail : Types.WebPart =
    parse_then_map_json post_data_parse_fail json_parse_fail f
  
  let map_json_async' post_data_parse_fail json_parse_fail (f: 'a -> Async<'b>) : Types.WebPart =
    parse_then_map_json_async post_data_parse_fail json_parse_fail f
  
  /// Expose function f through a json call; lets you write like
  ///
  /// let app =
  ///   url "/path"  >>= map_json some_function;
  ///
  let map_json (f: 'a -> 'b) : Types.WebPart =
    parse_then_map_json default_post_data_parse_fail default_json_parse_fail f
  
  /// Expose function f through an async json call; lets you write like
  ///
  
negative.code:       | None, str -> return! json_parse_fail str http_context
    }
  
  let parse_then_map_json_async post_data_parse_fail json_parse_fail (f: 'a -> Async<'b>) : Types.WebPart =
    choose
      [
  