Why is the preread method of plugin in the stream subsystem called after receiving at least 5 bytes?

Hello Dears,
Could anyone help me?
My plugin implements the preread method. I test it with a TCP client. When the first byte is sent, the preread method is not called until the fifth byte is sent. Why?