Can we split this into 2 methods?  One that's a temporal write, and one that's a persistent write?  That way we can hide the timeout details from the caller.