Indy error 10038 "Operación de socket en no socket" después de 61 segundos de inactividad

Quiero descargar algunos archivos grandes (GB) de un servidor FTP. La descarga del primer archivo siempre funciona. Luego, cuando intento obtener el segundo archivo, obtengo:

"Error de socket # 10038. Operación de socket en no socket".

El error está en 'Obtener'. Después de 'Obtener' veo estos mensajes (a través del evento de estado FTP):

   Starting FTP transfer
   Disconnecting.
   Disconnected.

El código es así:

{pseudo-code}
for 1 to AllFiles do 
 begin 
   if Connect2FTP then 
    begin
     FTP.Get(Name, GzFile, TRUE, FALSE);  <--- Socket operation on non-socket" error (I also get EIdConnClosedGracefully 'Connection Closed Gracefully' in IDE, F9 will resume execution without problems, but this is OK)
     Unpack(GzFile); <--- this takes more than 60 seconds
    end;
 end;
if FTP.Connected
then FTP.Disconnect;

-

function Connect2FTP(FTP: TIdFTP; RemoteFolder: string; Log: TRichLog): Boolean;      
begin
 Result:= FTP.Connected;
 if NOT Result then
  begin         { We are already connected }
   FTP.Host    := MyFTP;
   FTP.Username:= usr;
   FTP.Password:= psw;

   TRY
    FTP.Connect;
   EXCEPT
    on E: Exception DO

   Result:= FTP.Connected;
   if Result then FTP.ChangeDir(RemoteFolder); 
  end;
end;

Código completo aquí:http://pastebin.com/RScj86R8 (PAS) o aquíhttps://ufile.io/26b54 (CÓDIGO POSTAL)

Creo que el problema aparece después de llamar a 'Desempaquetar', que lleva unos minutos.

ACTUALIZACIÓN: CONFIRMADO: El problema aparece después de llamar 'Desempaquetar'. Eliminé la llamada y todo está bien. Pausar (suspender o interrumpir) el programa entre descargas durante un tiempo (creo que durante más de 60 segundos) creará el mismo problema.

Respuestas a la pregunta(1)

Su respuesta a la pregunta