> It’s best not to acquire a mutex and launch a goroutine to read 3 bytes of data at a time.
io.Copy uses 32KB buffers. Other parts of standard library do too. If you're using Read() to read 3 bytes of data at a time, mutex is the least of your worries.
Since you seem to be ignoring sarcasm of my previous comment - just saying "don't do that" without suggesting an alternative way in the particular code context you're referring to, isn't useful at all. It's just annoying.
It may well use 32KB buffers, or any size, but that doesn’t translate to “reading 32KB at a time”.
If you’re aborting specifically an io.Copy, then there are better ways to do that: abort in the write path rather than the read path.
It’s not my job to provide you with alternative code. That’s your job.