Indy Buffering de escritura / Comunicación TCP eficiente

Lo sé, estoy haciendo muchas preguntas ... pero como nuevo desarrollador de Delphi sigo cayendo sobre todas estas preguntas:)

Este se ocupa de la comunicación TCP utilizando indy 10. Para hacer que la comunicación sea eficiente, codifico una solicitud de operación del cliente como un solo byte (en la mayoría de los escenarios seguidos de otros bytes de datos, por supuesto, pero en este caso solo un byte). El problema es que

var Bytes : TBytes;
...
SetLength (Bytes, 1);
Bytes [0] := OpCode;
FConnection.IOHandler.Write (Bytes, 1);
ErrorCode := Connection.IOHandler.ReadByte;

no envía ese byte inmediatamente (al menos no se invoca el controlador de ejecución de servidores). Si cambio el '1' a un '9', por ejemplo, todo funciona bien. Supuse que Indy almacena en búfer los bytes salientes e intenté deshabilitar el almacenamiento en búfer de escritura con

FConnection.IOHandler.WriteBufferClose;

pero no ayudó. ¿Cómo puedo enviar un solo byte y asegurarme de que se envíe de inmediato? Y, agrego otra pequeña pregunta aquí, ¿cuál es la mejor manera de enviar un número entero usando indy? Desafortunadamente, no puedo encontrar funciones como WriteInteger en el IOHandler de TIdTCPServer ... y

WriteLn (IntToStr (SomeIntVal))

arece que no es muy eficiente para mí. ¿Hace alguna diferencia si uso múltiples comandos de escritura en una fila o si empaqueto cosas en una matriz de bytes y las envío una vez?

¡Gracias por cualquier respuesta!

EDIT: agregué una pista de que estoy usando Indy 10 ya que parece haber cambios importantes en relación con los procedimientos de lectura y escritura.