In Jepsen, `:fail` refers to operations which are *definitely* known to not have taken place. Writes *do* have side effects, so if a write were to throw, returning `:fail` here could be incorrect; and Jepsen would produce incorrect results. My guess is that Jepsen would mistakenly claim the system was not linearizable, when it fact it might have been. You should either allow the exception to propagate (in which case it is converted to an `:info` op and the process hangs), or return `:info` here.