anchor.diff:                      ok;
                   false ->
                       timer:sleep(Timeout),
  -                    stream_from_file(H, Streamer, IsFinished, Timeout)
  +                    stream_data_from_file(H, Streamer, IsFinished, Timeout)
               end;
   
           {error, Reason} ->
  
positive.code:     maps:from_list([{convert_strings(K), convert_strings(V)} || {K, V} <- maps:to_list(T)]);
  convert_strings(T) -> T.
  
  stream_from_file(File, BenchId, Request) ->
      IsFinished =
          fun () ->
              mzb_api_server:is_datastream_ended(BenchId)
          end,
      Streamer = fun (Bin) -> cowboy_req:chunk(Bin, Request) end,
      ReadAtOnce = application:get_env(mzbench_api, bench_read_at_once, undefined),
      {ok, H} = file:open(File, [raw, read, binary, {read_ahead, ReadAtOnce}]),
      try
          PollTimeout = application:get_env(mzbench_api, bench_poll_timeout, undefined),
          stream_from_file(H, Streamer, IsFinished, PollTimeout)
      after
          file:close(H)
      end.
  
  stream_from_file(H, Streamer, IsFinished, Timeout) ->
      IsLastTime = IsFinished(),
      case file:read(H, 1024) of
          {ok, D} ->
              Streamer(D),
              stream_from_file(H, Streamer, IsFinished, Timeout);
  
          eof ->
              case IsLastTime of
  
negative.code:     with_bench_id(Req, fun(Id) ->
          #{config:= Config} = mzb_api_server:status(Id),
          #{log_compression:= Compression} = Config,
          Filename = mzb_api_bench:log_file(Config),
          {ok, stream_from_file(Filename, Compression, Id, Req), #{}}
      end);
  
  handle(<<"GET">>, <<"/data">>, Req) ->
      with_bench_id(Req, fun(Id) ->
          #{config:= Config} = mzb_api_server:status(Id),
          #{metrics_compression:= Compression} = Config,
          Filename = mzb_api_bench:metrics_file(Config),
          {ok, stream_from_file(Filename, Compression, Id, Req), #{}}
      end);
  
  handle(<<"GET">>, <<"/email_report">>, Req) ->
  