It's mildly amusing that a language that emphases explicit error returns should discard a system interface that does that in favour of one that's not even a raised exception but a trap.
(ok, ok, Unix typically just returns crappy EIO on a real error, but does distinguish several other cases such as ENOSPC.)
And it's relying on the paging subsystem which is even worse.