cf. https://vibed.org/api/vibe.core.stream/InputStream.read

ubyte[256] buffer;
auto n = req.bodyReader.read(buffer, IOMode.once);

appears to work fine as long as there are 256 ubytes to read. If however the end of stream means there are less than 256 ubytes available then an exception is thrown.

At first sight this seems inconsistent with the read returning the number of ubytes read.

Or am I missing something?