recuperándose de "Connection Reset By Peer" Indy TCP Client

¿Cómo debo estar recuperándome en esta situación?

El servidor se bloquea, por lo que la conexión se ha cerrado de forma anormal. Las llamadas a casi todo dan como resultado excepciones de "Restablecimiento de conexión por par". Parece que lo arreglé llamando a Desconectar en el objeto TIdTCPClient dentro del bloque de excepción, pero da como resultado una excepción final con el mismo mensaje (que detecté en el segundo bloque de prueba de excepción).

Esto es con Indy10 y Delphi XE2.

<code>   try
      if not EcomSocket.Connected then EcomSocket.Connect();
    except
      on e: Exception do begin
        try
          EcomSocket.Disconnect();
        except
          MessageDlg('Connectivity to the server has been lost.', mtError, [mbOK], 0);
        end;
      end;
    end;
</code>

Respuestas a la pregunta(1)

Su respuesta a la pregunta