Olá pessoal! A solução para o meu caso foi simplesmente não fechar o socket. Optei por não utilizar o comando FecharSocket, pois essa abordagem resolveu o problema. Como essa solução é específica para minha situação, e não tenho outras impressoras para testar, não vou compartilhar o arquivo aqui. No entanto, implementei um tratamento para decidir se o FecharSocket deve ser utilizado ou não, dependendo do caso.
Uma observação interessante é que, ao debugar o código sem meus ajustes, o timeout não ocorria. Porém, ao rodar a aplicação normalmente (fora do modo de depuração), o timeout acontecia. Tentei até adicionar um Sleep após chamar o FecharSocket, mas isso também não resolveu.
Espero que essas informações possam ajudar outros desenvolvedores a encontrar uma correção, se necessário.
Obrigado.