Hi Alexander,
I don't think there is a fundamental problem implementing waitCancelTimeout (waitAnyCancel is implemented for both APIs?) and I suspect we can collapse the implementation into just one interface now if we wish. The only real difference is in the implementation details and I strongly suspect that the STM based implementation is more efficient anyway. I originally wrote the channels based one and then re-implemented using STM to avoid the limitation that the async handle is usable only by its creating process.
I'm just in the process of splitting up distributed-process-platform into smaller libraries, so the distributed-process-async library will include just one top level API - the STM based one.
Cheers,
Tim