anchor.diff:  clean_state() ->
       #{pid => undefined,
         stream => undefined,
  +      stream_to => undefined,
         from => undefined,
         responses => queue:new(),
         data => <<"">>,
         status_code => undefined,
         headers => undefined
        }.
  +
  +maps_get(Key, Map, Default) ->
  +    case maps:is_key(Key, Map) of
  +        true ->
  +            maps:get(Key, Map);
  +        false ->
  +            Default
  +    end.
  
positive.code: at_rest({asyncget, Url, Headers}, #{pid := Pid} = _State) ->
      StreamRef = gun:get(Pid, Url, Headers),
      NewState = clean_state(),
      {next_state, wait_response, NewState#{pid := Pid, stream := StreamRef}}.
  
  at_rest({get, Url, Headers}, From, #{pid := Pid} = _State) ->
      StreamRef = gun:get(Pid, Url, Headers),
  
negative.code:     get(Pid, Url, Headers, #{}).
  
  get(Pid, Url, Headers, Options) ->
      StreamTo = maps_get(stream_to, Options, false),
      Async = maps_get(async, Options, false),
      case {StreamTo, Async} of
          {false, false} ->
              gen_fsm:sync_send_event(Pid, {get, Url, Headers});
          {false, Async} ->
              gen_fsm:send_event(Pid, {asyncget, Url, Headers});
          {StreamTo, false} ->
              gen_fsm:send_event(Pid, {asyncget, Url, Headers, StreamTo});
          _ ->
              gen_fsm:send_event(Pid, {asyncget, Url, Headers, StreamTo})
      end.
  
  -spec pop(Pid :: pid()) -> {binary()}.
  