anchor.diff:      get(Pid, Url, Headers, #{}).
   
   get(Pid, Url, Headers, Options) ->
  -    case maps:is_key(stream, Options) of
  -        true ->
  +    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});
  -        false ->
  -            gen_fsm:sync_send_event(Pid, {get, 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()}.
  
positive.code: clean_state() ->
      #{pid => undefined,
        stream => undefined,
        from => undefined,
        responses => queue:new(),
        data => <<"">>,
        status_code => undefined,
        headers => undefined
       }.
  
negative.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({asyncget, Url, Headers, StreamTo}, #{pid := Pid} = _State) ->
      StreamRef = gun:get(Pid, Url, Headers),
      NewState = clean_state(),
      {next_state, wait_response, NewState#{pid := Pid, stream := StreamRef, stream_to := StreamTo}}.
  
  at_rest({get, Url, Headers}, From, #{pid := Pid} = _State) ->
      StreamRef = gun:get(Pid, Url, Headers),
  