Empty content when reading 'big' packets on TCP/IP

There is also an active PR for adding IO#read_greedy which is more convenient than #read_fully if you don’t expect a fixed size: https://github.com/crystal-lang/crystal/pull/16535
Unfortunately, it’ll only be available in Crystal 1.20.
You could monkey-patch it into your code base, though.

And I’ve been wondering whether we could reduce surprises like this by changing the behaviour of the default #read method: https://github.com/crystal-lang/crystal/issues/14605#issuecomment-3695047933
So this is a good example where that would’ve been helpful.