I agree, "masterless" is ideal but it is against KISS somehow....
About error handling, does ZK-22 means disconnection will be eliminated from API and will be solely handled by ZK implementation? I am not sure it is such a good idea though. Application layer need to be notified that communication with ZK has been broken - things may out of sync - and enter the safe mode accordingly.I would image in some cases current "fail fast" behavior might be desirable. Another layer on top of ZK API (with overridable behavior, like the ProtocolSupport stuff) seems strike a balance here... my 2c