I feel like the behaviour of this is slightly peculiar, e.g., say you had two 100 byte files, it would take two calls to this `.read` to fill a `[u8, .. 200]`, right?

Shouldn't this function be attempting to fill the buffer?