In ClojureScript (as of 1.12.145) one can declare a function (defn, fn) to be async by adding the metadata ^:async. However, the same is not applicable to protocol functions and multi-methods. Since async is an invocation semantic, should it be carried over to protocol functions and multimethods? (If yes, should it apply to the protocol definition in defprotocol or to the protocol implementation in reify?)
If async is not to be allowed in protocol functions and multimethods, then the documentation should clearly mention the omissions, alternatives and workaround.