How to do distributed locking — Martin Kleppmann's bl