anchor.diff:    {ok, Pid :: pid()} | ignore | {error, Reason :: term()}.
   start_link(Connection, Client) ->
     Name = name(Connection),
  -  gen_server:start_link({local, Name}, ?MODULE, [Connection, Client], []).
  +  gen_server:start_link({local, Name}, ?MODULE, {Connection, Client}, []).
   
   %% @doc Builds a connection() map from the environment variables.
   -spec default_connection(name()) -> connection().
  
positive.code: %%% gen_server callbacks
  %%%===================================================================
  
  -spec init(list()) -> {ok, State :: state()}.
  init([Connection, Client]) ->
    {GunMonitor, GunConnectionPid} = open_gun_connection(Connection),
    % wait until the connection is established
    self() ! {wait_gun_up, Client},
  
    {ok, #{ connection     => Connection
          , gun_connection => GunConnectionPid
          , gun_monitor    => GunMonitor
          }}.
  
  -spec handle_call( Request :: term(), From :: {pid(), term()}, State) ->
    {reply, ok, State}.
  
negative.code:               } = State) ->
    {GunMonitor2, GunConnPid2} = open_gun_connection(Connection),
    {noreply, State#{gun_connection => GunConnPid2, gun_monitor => GunMonitor2}};
  handle_info(timeout, #{gun_connection := GunConn, client := Client} = State) ->
    {ok, Timeout} = application:get_env(apns, timeout),
    case gun:await_up(GunConn, Timeout) of
      {ok, http2} ->
  