Doesn't `Error` also need to return how many bytes were written, as `write` and `writev` do in POSIX?  Otherwise, it's impossible to recover from a partial write.  The backend also needs to guarantee that the buffer list is written in serial, so that the caller can resume from the correct point in the list when retrying.