I took a quick glance, but don't see any logic related to error handling in the write_op and read_op chain stuff for Mobject.
For instance, it's not clear to me how we're supposed to handle errors that may arise in the middle of a longer chain of read_op/write_op requests. These functions that implement the various operations that can be performed in a write_op/read_op all return void values, so you can't explicitly return an error code. Given that, I guess each write_op/read_op just executes until completion, regardless of how many errors are encountered?
I think we need to add some functionality to allow for an explicit error number to be set on a write_op/read_op that causes the operation to abort and ACK back to the client? Otherwise, we won't know what specific error caused a long chain to fail or, worse, we may mask the fact than an error occurred at all (if a successful operation occurs after one that failed, overwriting it).