anchor.diff:          socket = Socket,
           socket_mode = ?DEFAULT_SOCKET_MODE,
           transport = Transport,
  -        ip = Host,
           ok = Ok,
           closed = Closed,
           error = Error,
  
positive.code:     {noreply, NewState :: state()} |
      {noreply, NewState :: state(), timeout() | hibernate} |
      {stop, Reason :: term(), NewState :: state()}.
  handle_info(upgrade_protocol, #state{ip = Hostname} = State) ->
      case socket_send(State, protocol_utils:protocol_upgrade_request(Hostname)) of
          {ok, NewState} ->
              {noreply, NewState, ?PROTO_CONNECTION_TIMEOUT};
  
negative.code: %%%
  %%% In case of errors during init, upgrading_protocol or performing_handshake
  %%% connection is immediately terminated.
  %%% On the other hand, when connection is in ready status, every kind of error
  %%% is logged, but only socket errors terminates it.
  %%% @end
  %%%-------------------------------------------------------------------
  