anchor.diff:      case enoise:send(ESock, Msg) of
           ok ->
               ok;
  -        Err = {error, _} ->
  +        Err = {error, Reason} ->
  +            self() ! {enoise_error, ESock, Reason},
               lager:info("Failed to send message: ~p", [Err]),
               Err
       end.
  
positive.code:                 , {timeout, HSTimeout} ],
      %% Keep the socket passive until here to avoid premature message
      %% receiving...
      inet:setopts(TcpSock, [{active, true}]),
      case enoise:connect(TcpSock, NoiseOpts) of
          {ok, ESock, _} ->
              lager:debug("Peer connected to ~p", [{maps:get(host, S), maps:get(port, S)}]),
  
negative.code:             lager:info("Could not deserialize message ~p", [Err]),
              {noreply, S}
      end;
  handle_info({enoise_error, _, Reason}, S) ->
      lager:debug("Peer connection got enoise_error: ~p", [Reason]),
      handle_general_error(S);
  handle_info({tcp_closed, _}, S) ->
      lager:debug("Peer connection got tcp_closed", []),
  