anchor.diff:  
   %% @private
   %% @doc Chunked data response
  --spec receive_chunk(term(), term()) -> term().
  +-spec receive_chunk(term(), state()) -> term().
   receive_chunk({'DOWN', _, _, _, _Reason}, _State) ->
       error(incomplete);
   receive_chunk({gun_data, _Pid, StreamRef, IsFin, Data}, State) ->
  
positive.code: 
  %% @private
  %% @doc Regular response
  -spec receive_data(term(), term()) -> term().
  receive_data({'DOWN', _, _, _, _Reason}, _State) ->
      error(incomplete);
  receive_data({gun_data, _Pid, StreamRef, nofin, Data},
  
negative.code:     {next_state, wait_response, NewState}.
  
  %% @private
  -spec wait_response(term(), term()) ->
      {stop, {error, any()}, atom(), state()} |
      {next_state, atom(), state(), timeout()}.
  wait_response({'DOWN', _, _, _, Reason}, _State) ->
      exit(Reason);
  wait_response({gun_response, _Pid, _StreamRef, fin, StatusCode, Headers},
  