simplified and less taxing restore from journal
allowing synchronous usage

sync: fn(a) { return result; }
sync: fn(a) { throw error; }
async: fn(a,cb) { cb(null, result); }
async: fn(a,cb) { cb(error, null); }