Indy Write Buffering / Comunicação TCP eficiente

Eu sei, estou fazendo muitas perguntas ... mas, como novo desenvolvedor de delphi, continuo caindo sobre todas essas perguntas:)

Este trata da comunicação TCP usando o indy 10. Para tornar a comunicação eficiente, eu codifico uma solicitação de operação do cliente como um byte único (na maioria dos cenários seguidos por outros bytes de dados, é claro, mas nesse caso apenas um byte). O problema é que

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

não envia esse byte imediatamente (pelo menos os servidores executam o manipulador não é chamado). Se eu mudar o '1' para o '9', por exemplo, tudo funcionará bem. Eu assumi que Indy armazena em buffer os bytes de saída e tentou desativar o buffer de gravação com

FConnection.IOHandler.WriteBufferClose;

mas não ajudou. Como posso enviar um único byte e garantir que ele seja enviado imediatamente? E - eu adiciono outra pequena pergunta aqui - qual é a melhor maneira de enviar um número inteiro usando indy? Infelizmente não consigo encontrar funções como WriteInteger no IOHandler do TIdTCPServer ... e

WriteLn (IntToStr (SomeIntVal))

parece não muito eficiente para mim. Faz diferença se eu uso vários comandos de gravação em uma linha ou agrupo as coisas em uma matriz de bytes e a envio uma ve

Obrigado por qualquer resposta!

EDIT: Adicionei uma dica de que estou usando o Indy 10, pois parece haver grandes alterações nos procedimentos de leitura e gravaçã