<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Clojure Q&amp;A - Recent questions tagged multimethod</title>
<link>https://ask.clojure.org/index.php/tag/multimethod</link>
<description></description>
<item>
<title>Implement ^:async (CLJS) for protocol functions and multi-methods</title>
<link>https://ask.clojure.org/index.php/15187/implement-async-cljs-for-protocol-functions-multi-methods</link>
<description>&lt;p&gt;In ClojureScript (as of &lt;code&gt;1.12.145&lt;/code&gt;) one can declare a function (&lt;code&gt;defn&lt;/code&gt;, &lt;code&gt;fn&lt;/code&gt;) to be async by adding the metadata &lt;code&gt;^:async&lt;/code&gt;. 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 &lt;code&gt;defprotocol&lt;/code&gt; or to the protocol implementation in &lt;code&gt;reify&lt;/code&gt;?)&lt;/p&gt;
&lt;p&gt;If async is not to be allowed in protocol functions and multimethods, then the documentation should clearly mention the omissions, alternatives and workaround.&lt;/p&gt;
</description>
<category>ClojureScript</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/15187/implement-async-cljs-for-protocol-functions-multi-methods</guid>
<pubDate>Sun, 19 Jul 2026 11:53:45 +0000</pubDate>
</item>
</channel>
</rss>