anchor.diff:  %% @private
   url_encode(Binary) when is_binary(Binary) ->
       url_encode(unicode:characters_to_list(Binary));
  +
  +url_encode(Atom) when is_atom(Atom) ->
  +    url_encode(atom_to_binary(Atom, utf8));
   
   url_encode(String) ->
       url_encode(String, []).
  
positive.code:     key => string()|binary(),
      secret => string()|binary(),
      path => string() | binary(),            %% Uri-encoded (except for S3)
      headers => #{string()|binary()|atom() => string()|binary()},
      params => #{string()|binary()|atom() => string()|binary()},
      meta => #{string()|binary()|atom() => string()|binary()},
      hash => binary,                         %% crypto:hash(sha256, Body)
  
negative.code: %% @private
  url_encode_loose(Binary) when is_binary(Binary) ->
      url_encode_loose(binary_to_list(Binary));
  
  url_encode_loose(Atom) when is_atom(Atom) ->
      url_encode_loose(atom_to_binary(Atom, utf8));
  
  url_encode_loose(String) ->
      url_encode_loose(String, []).
  