uv_fs_write (which is kind of similar) returns int and gets a void* and a size_t instead of a uv_buf_t: https://github.com/joyent/libuv/blob/master/include/uv.h#L1681

Should we make it similar?