anchor.diff:                           , apple_port := inet:port_number()
                            , certfile   => path()
                            , keyfile    => path()
  +                         , timeout    => integer()
                            , type       := type()
                            }.
   
  
positive.code:    , backoff_ceiling := Ceiling
     } = State,
    GunConn = open_gun_connection(Connection),
    {ok, Timeout} = application:get_env(apns, timeout),
    case gun:await_up(GunConn, Timeout) of
      {ok, http2} ->
        Client ! {connection_up, self()},
  
negative.code:   {ok, Port} = application:get_env(apns, apple_port),
    {ok, Certfile} = application:get_env(apns, certfile),
    {ok, Keyfile} = application:get_env(apns, keyfile),
    {ok, Timeout} = application:get_env(apns, timeout),
  
    #{ name       => ConnectionName
     , apple_host => Host
     , apple_port => Port
     , certfile   => Certfile
     , keyfile    => Keyfile
     , timeout    => Timeout
     , type       => cert
    };
  default_connection(token, ConnectionName) ->
    {ok, Host} = application:get_env(apns, apple_host),
    {ok, Port} = application:get_env(apns, apple_port),
    {ok, Timeout} = application:get_env(apns, timeout),
  
    #{ name       => ConnectionName
     , apple_host => Host
     , apple_port => Port
     , timeout    => Timeout
     , type       => token
    }.
  
  