anchor.diff:                , {data, Data, FinNoFin}
                 , #{stream := StreamRef, pid := Pid} = StateData) ->
       ok = gun:data(Pid, StreamRef, FinNoFin, Data),
  -    gen_statem:reply(From, ok),
  -    {next_state, wait_response, StateData};
  +    {next_state, wait_response, StateData, [{reply, From, ok}]};
   wait_response({call, From}, Event, StateData) ->
       enqueue_work_or_stop(wait_response, Event, From, StateData);
   wait_response(cast, {'DOWN', _, _, _, Reason}, _StateData) ->
  
positive.code:                     headers => Headers,
                      body => NewData
                     }},
      gen_statem:reply(From, Result),
      {next_state, at_rest, StateData, 0};
  receive_data(cast, {gun_error, _Pid, StreamRef, _Reason},
               #{stream := StreamRef} = StateData) ->
      {next_state, at_rest, StateData, 0};
  
negative.code:             {keep_state, NewStateData, [{timeout, Timeout, get_work}]};
          not_work ->
              Error = {error, {unexpected, Event}},
              {keep_state_and_data, [{reply, From, Error}]}
      end.
  
  %% @private
  