<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Clojure Q&amp;A - Recent questions and answers in core.async</title>
<link>https://ask.clojure.org/index.php/qa/contrib-libs/core-async</link>
<description></description>
<item>
<title>Answered: `flow/ping-proc` can be slow or fail to respond, even when process isn't busy</title>
<link>https://ask.clojure.org/index.php/14911/flow-ping-proc-slow-fail-respond-even-when-process-isnt-busy?show=14912#a14912</link>
<description>&lt;p&gt;Thanks, we've been discussing ways to specify filters for proc state datafication.&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14911/flow-ping-proc-slow-fail-respond-even-when-process-isnt-busy?show=14912#a14912</guid>
<pubDate>Wed, 28 Jan 2026 19:54:27 +0000</pubDate>
</item>
<item>
<title>Answered: flow monitoring tool serves resources from unqualified path</title>
<link>https://ask.clojure.org/index.php/14748/flow-monitoring-tool-serves-resources-from-unqualified-path?show=14768#a14768</link>
<description>&lt;p&gt;Resource path has been updated in &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/core.async.flow-monitor/releases/tag/v0.1.3&quot;&gt;v0.1.3&lt;/a&gt;&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14748/flow-monitoring-tool-serves-resources-from-unqualified-path?show=14768#a14768</guid>
<pubDate>Mon, 24 Nov 2025 19:27:37 +0000</pubDate>
</item>
<item>
<title>`pipeline-blocking` uses `thread` internally instead of `io-thread`</title>
<link>https://ask.clojure.org/index.php/14738/pipeline-blocking-uses-thread-internally-instead-of-thread</link>
<description>&lt;p&gt;&lt;code&gt;pipeline-blocking&lt;/code&gt; is explicitly meant for blocking operations (implying I/O). However, internally it uses &lt;code&gt;thread&lt;/code&gt; rather than &lt;code&gt;io-thread&lt;/code&gt; for processing: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/core.async/blob/master/src/main/clojure/clojure/core/async.clj#L637-L640&quot;&gt;https://github.com/clojure/core.async/blob/master/src/main/clojure/clojure/core/async.clj#L637-L640&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since 1.9.829-alpha2 this has practical implications, as only &lt;code&gt;io-thread&lt;/code&gt; will utilize virtual threads, when available.&lt;/p&gt;
&lt;p&gt;Can this be fixed / changed?&lt;br&gt;
If not, can an explicit &lt;code&gt;pipeline-io&lt;/code&gt; (or similar)  function be added to support this use case?&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14738/pipeline-blocking-uses-thread-internally-instead-of-thread</guid>
<pubDate>Wed, 29 Oct 2025 15:54:00 +0000</pubDate>
</item>
<item>
<title>Choosing between core.async pipelines</title>
<link>https://ask.clojure.org/index.php/14732/choosing-between-core-async-pipelines</link>
<description>&lt;p&gt;It's no longer clear what kind of pipeline is suitable for what kind of task in &lt;code&gt;core.async&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Previously, my understanding was that anything I/O-bound should go into &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/core.async/blob/v1.9.829-alpha2/src/main/clojure/clojure/core/async.clj#L682-L686&quot;&gt;&lt;code&gt;pipeline-blocking&lt;/code&gt;&lt;/a&gt;, while CPU-bound tasks went into regular (i.e. &lt;code&gt;:compute&lt;/code&gt;) &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/core.async/blob/v1.9.829-alpha2/src/main/clojure/clojure/core/async.clj#L665-L680&quot;&gt;&lt;code&gt;pipeline&lt;/code&gt;&lt;/a&gt;. But a while back &lt;code&gt;:compute&lt;/code&gt; pipelines were &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/core.async/commit/3429e3e1f1d49403bf9608b36dbd6715ffe4dd4f&quot;&gt;changed&lt;/a&gt; to use threads instead of go-blocks. And now, with the introduction of &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.org/news/2025/10/01/async_virtual_threads&quot;&gt;virtual threads&lt;/a&gt;, &lt;code&gt;pipeline-async&lt;/code&gt; seems like the right choice for I/O-bound tasks.&lt;/p&gt;
&lt;p&gt;It seems that workloads are being classified into one of &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/core.async/blob/v1.9.829-alpha2/src/main/clojure/clojure/core/async/impl/dispatch.clj#L130-L132&quot;&gt;three types&lt;/a&gt;: &lt;code&gt;:compute&lt;/code&gt;, &lt;code&gt;:io&lt;/code&gt;, and &lt;code&gt;:mixed&lt;/code&gt;. Is &lt;code&gt;:async&lt;/code&gt; meant to be the equivalent of &lt;code&gt;:io&lt;/code&gt;, and &lt;code&gt;:blocking&lt;/code&gt; the equivalent of &lt;code&gt;:mixed&lt;/code&gt;? I don't think that's original semantics, but it seems to be the mapping now.&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14732/choosing-between-core-async-pipelines</guid>
<pubDate>Sun, 26 Oct 2025 22:19:12 +0000</pubDate>
</item>
<item>
<title>Answered: Replace core.async’s internal LinkedList queue with ArrayDeque?</title>
<link>https://ask.clojure.org/index.php/14696/replace-core-asyncs-internal-linkedlist-queue-arraydeque?show=14704#a14704</link>
<description>&lt;p&gt;There is a ticket for this at &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/ASYNC-231&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-231&lt;/a&gt;&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14696/replace-core-asyncs-internal-linkedlist-queue-arraydeque?show=14704#a14704</guid>
<pubDate>Wed, 03 Sep 2025 20:10:39 +0000</pubDate>
</item>
<item>
<title>Answered: Typos in Flow guide</title>
<link>https://ask.clojure.org/index.php/14686/typos-in-flow-guide?show=14687#a14687</link>
<description>&lt;p&gt;Already fixed, thx&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14686/typos-in-flow-guide?show=14687#a14687</guid>
<pubDate>Mon, 18 Aug 2025 13:35:12 +0000</pubDate>
</item>
<item>
<title>Answered: Is core.async.flow available in ClojureScript?</title>
<link>https://ask.clojure.org/index.php/14633/is-core-async-flow-available-in-clojurescript?show=14635#a14635</link>
<description>&lt;p&gt;No, we are not currently targeting it to ClojureScript as it's really intended for writing multi-threaded applications.&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14633/is-core-async-flow-available-in-clojurescript?show=14635#a14635</guid>
<pubDate>Fri, 18 Jul 2025 19:10:40 +0000</pubDate>
</item>
<item>
<title>Answered: what kind of systems could be made with clojure.async.flow?</title>
<link>https://ask.clojure.org/index.php/14526/what-kind-of-systems-could-be-made-with-clojure-async-flow?show=14527#a14527</link>
<description>&lt;p&gt;core.async.flow is particularly well suited to what Rich called &quot;situated programs&quot; in the &quot;Effective Programs&quot; talk &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=2V1FtfBDsLU&quot;&gt;https://www.youtube.com/watch?v=2V1FtfBDsLU&lt;/a&gt; .  These programs execute for long periods of time (often continuously), deal with information, have extensive &quot;memory&quot; (via database connections), and interact with the real world via external I/O channels (these days, often messaging systems like Kafka etc). &lt;/p&gt;
&lt;p&gt;You're correct that flow is a poor fit to run in a lambda or in a an RPC style web request path - you are probably better served in writing synchronous code for those scenarios and avoiding the setup and async overhead. But those kinds of processes often feed one or more situated programs via a message queue or database insert.&lt;/p&gt;
&lt;p&gt;I would also recommend Rich's &quot;Language of the System&quot; talk which predates flow and core.async(!) by many years but is very much of this idea. &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=ROor6_NGIWU&quot;&gt;https://www.youtube.com/watch?v=ROor6_NGIWU&lt;/a&gt;&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14526/what-kind-of-systems-could-be-made-with-clojure-async-flow?show=14527#a14527</guid>
<pubDate>Tue, 29 Apr 2025 16:19:18 +0000</pubDate>
</item>
<item>
<title>core.async go block error with clojure 1.12 method values</title>
<link>https://ask.clojure.org/index.php/14425/core-async-go-block-error-with-clojure-1-12-method-values</link>
<description>&lt;p&gt;I haven't seen this reported. &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(Long/.toString 123) ;;works
(a/&amp;lt;!! (a/thread (Long/.toString 123))) ;;works
(a/go (Long/.toString 123)) ;;error
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Note: The following stack trace applies to the reader or compiler, your code was not executed.

CompilerException Syntax error macroexpanding a/go at (1:1). {:clojure.error/phase :macro-syntax-check, :clojure.error/line 1, :clojure.error/column 1, :clojure.error/source &quot;NO_SOURCE_PATH&quot;, :clojure.error/symbol a/go}
ExceptionInfo No matching method: .toString for class: class java.lang.Long and arity: 1 {:method .toString, :class java.lang.Long, :argc 1, :file &quot;NO_SOURCE_PATH&quot;, :column 7, :line 1}
	clojure.tools.analyzer.passes.jvm.validate/validate-call (validate.clj:127)
	clojure.tools.analyzer.passes.jvm.validate/validate-call (validate.clj:87)
	clojure.tools.analyzer.passes.jvm.validate/eval4802/fn--4803 (validate.clj:137)
	clojure.lang.MultiFn.invoke (MultiFn.java:229)
	clojure.tools.analyzer.passes.jvm.validate/validate (validate.clj:265)
	clojure.tools.analyzer.passes.jvm.validate/validate (validate.clj:240)
	clojure.lang.Var.invoke (Var.java:386)
	clojure.tools.analyzer.passes/compile-passes/fn--3424/fn--3429 (passes.clj:167)
	clojure.tools.analyzer.passes/compile-passes/fn--3424/fn--3431 (passes.clj:169)
	clojure.tools.analyzer.passes/compile-passes/fn--3424/fn--3431 (passes.clj:169)
	clojure.tools.analyzer.passes/compile-passes/fn--3424/fn--3431 (passes.clj:169)
	clojure.core/partial/fn--5929 (core.clj:2648)
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14425/core-async-go-block-error-with-clojure-1-12-method-values</guid>
<pubDate>Tue, 25 Feb 2025 19:17:23 +0000</pubDate>
</item>
<item>
<title>Answered: The cljs docstring of `clojure.core.async/promise-chan` does not mention that it returns the value repeatedly</title>
<link>https://ask.clojure.org/index.php/14088/docstring-clojure-promise-mention-returns-value-repeatedly?show=14096#a14096</link>
<description>&lt;p&gt;Thanks, an oversight. Fixed in core-async master now.&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/14088/docstring-clojure-promise-mention-returns-value-repeatedly?show=14096#a14096</guid>
<pubDate>Thu, 29 Aug 2024 16:56:15 +0000</pubDate>
</item>
<item>
<title>Answered: Why do core.async timeouts rely on non-monotonic system clock?</title>
<link>https://ask.clojure.org/index.php/13420/why-do-core-async-timeouts-rely-on-non-monotonic-system-clock?show=13421#a13421</link>
<description>&lt;p&gt;Small correction: On POSIX systems, &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/openjdk/jdk/blob/7a7b1e5a920d71ab717d8993c9258a01f1074a48/src/hotspot/os/posix/os_posix.cpp#L1405&quot;&gt;OpenJDK uses &lt;code&gt;clock_gettime&lt;/code&gt; with &lt;code&gt;CLOCK_MONOTONIC&lt;/code&gt;&lt;/a&gt; for &lt;code&gt;System/nanoTime&lt;/code&gt; which &lt;em&gt;is&lt;/em&gt; subject to incremental adjustments as done e.g. by NTP.  However, it does guarantee to never go backwards and it's not affected by discontinuous jumps (e.g. by manually setting the system time) That's in contrast to &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/openjdk/jdk/blob/7a7b1e5a920d71ab717d8993c9258a01f1074a48/src/hotspot/os/posix/os_posix.cpp#L1391&quot;&gt;&lt;code&gt;CLOCK_REALTIME&lt;/code&gt; which is used by &lt;code&gt;System/currentTimeMillis&lt;/code&gt; there&lt;/a&gt;. See &lt;a rel=&quot;nofollow&quot; href=&quot;https://linux.die.net/man/2/clock_gettime&quot;&gt;man 2 clock_gettime&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;The discussion around &lt;a rel=&quot;nofollow&quot; href=&quot;https://bugs.openjdk.org/browse/JDK-8006942?focusedCommentId=13821928&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-13821928&quot;&gt;JDK-8006942&lt;/a&gt; has some insight into why such incremental adjustment might be desirable even for &lt;code&gt;System/nanoTime&lt;/code&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Having been bitten by various time-jumping bugs in the past due to NTP (and other) adjustments, my initial reaction was that doing any kind of adjustment to CLOCK_MONOTONIC was &quot;crazy&quot; and obviously we should prefer the unadjusted CLOCK_MONOTONIC_RAW. However after looking into this more carefully I agree with Martin's comment that the NTP-slew that is applied is generally desirable to keep the reported elapsed times in-line with actual elapsed time. This slew simply adjusts the rate at which the reported time is updated to account for hardware that runs faster or slower than true time (which is pretty much all hardware). It does not introduce observable jumps in the time reported and should not be observable to the end user.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13420/why-do-core-async-timeouts-rely-on-non-monotonic-system-clock?show=13421#a13421</guid>
<pubDate>Thu, 02 Nov 2023 14:45:13 +0000</pubDate>
</item>
<item>
<title>Answered: Virtual thread executor for core.async</title>
<link>https://ask.clojure.org/index.php/13366/virtual-thread-executor-for-core-async?show=13374#a13374</link>
<description>&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://git.sr.ht/~srasu/spindle&quot;&gt;Spindle&lt;/a&gt; monkey patches core.async to add this capability. Note: I’m not the author of this library, nor (yet) a user of it, though I greatly respect the author’s contributions to the Clojure ecosystem. &lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/13366/virtual-thread-executor-for-core-async?show=13374#a13374</guid>
<pubDate>Mon, 16 Oct 2023 11:12:34 +0000</pubDate>
</item>
<item>
<title>Answered: Fix for the ASYNC-163 - Off by two error in pipeline-async</title>
<link>https://ask.clojure.org/index.php/12394/fix-for-the-async-163-off-by-two-error-in-pipeline-async?show=12395#a12395</link>
<description>&lt;p&gt;Hello, the &quot;won't fix&quot; there is to indicate that we don't think this is a problem and don't think it needs to be fixed.&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12394/fix-for-the-async-163-off-by-two-error-in-pipeline-async?show=12395#a12395</guid>
<pubDate>Tue, 22 Nov 2022 18:38:36 +0000</pubDate>
</item>
<item>
<title>Answered: core.async readme oversight</title>
<link>https://ask.clojure.org/index.php/12372/core-async-readme-oversight?show=12373#a12373</link>
<description>&lt;p&gt;Thanks, fixed!&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12372/core-async-readme-oversight?show=12373#a12373</guid>
<pubDate>Wed, 09 Nov 2022 14:35:27 +0000</pubDate>
</item>
<item>
<title>Answered: core.async test hangs on single-cpu system</title>
<link>https://ask.clojure.org/index.php/12039/core-async-test-hangs-on-single-cpu-system?show=12040#a12040</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/ASYNC-246&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-246&lt;/a&gt;&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12039/core-async-test-hangs-on-single-cpu-system?show=12040#a12040</guid>
<pubDate>Wed, 06 Jul 2022 15:39:54 +0000</pubDate>
</item>
<item>
<title>Answered: (CLJS) A local named `new` breaks go macro in cljs (not in clj)</title>
<link>https://ask.clojure.org/index.php/339/cljs-a-local-named-new-breaks-go-macro-in-cljs-not-in-clj?show=10738#a10738</link>
<description>&lt;p&gt;I don't have an answer to this question. I was facing the same problem and did a bit of digging and thought I can share it here to help whoever is looking at this. I found that this issue is associated with creating &lt;code&gt;cljs.core/PersistentVector&lt;/code&gt;. Here are my examples:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(require '[cljs.core.async :refer [go &amp;lt;! chan put!]])

(def c (chan))

(put! c {:hi &quot;here&quot;})

;; This fails
(go
  (let [{:keys [new] :as msg} (&amp;lt;! c)]
    (js/console.log [:msg-received msg])))
;; ioc_helpers.cljs:50 Uncaught TypeError: inst_25288.call is not a function
;; at switch__20329__auto__ (eval at figwheel$repl$eval_javascript_STAR__STAR_ (repl.cljc:364), &amp;lt;anonymous&amp;gt;:86:29)
;; at eval (eval at figwheel$repl$eval_javascript_STAR__STAR_ (repl.cljc:364), &amp;lt;anonymous&amp;gt;:166:51)
;; at mini_reframe$app$state_machine__20330__auto____1 (eval at figwheel$repl$eval_javascript_STAR__STAR_ (repl.cljc:364), &amp;lt;anonymous&amp;gt;:188:4)
;; at mini_reframe$app$state_machine__20330__auto__ (eval at figwheel$repl$eval_javascript_STAR__STAR_ (repl.cljc:364), &amp;lt;anonymous&amp;gt;:204:57)
;; at cljs$core$async$impl$ioc_helpers$run_state_machine (ioc_helpers.cljs:43)
;; at cljs$core$async$impl$ioc_helpers$run_state_machine_wrapped (ioc_helpers.cljs:47)
;; at eval (eval at figwheel$repl$eval_javascript_STAR__STAR_ (repl.cljc:364), &amp;lt;anonymous&amp;gt;:218:67)
;; at cljs$core$async$impl$dispatch$process_messages (dispatch.cljs:27)
;; at MessagePort.channel.port1.onmessage (nexttick.js:218)

(put! c {:hi &quot;here&quot;})

;; All the below cases work
(go
  (let [{:keys [a] :as msg} (&amp;lt;! c)]
    (js/console.log [:msg-received msg])))
;; [:msg-received {:hi &quot;here&quot;}]

(put! c {:hi &quot;here&quot;})

(go
  (let [msg (&amp;lt;! c)]
    (js/console.log [:msg-received msg])))
;; [:msg-received {:hi &quot;here&quot;}]

(put! c {:hi &quot;here&quot;})

(go
  (let [{:keys [new] :as msg} (&amp;lt;! c)]
    (js/console.log msg)))
;; {:hi &quot;here&quot;}

(put! c {:hi &quot;here&quot;})

(defn receive-msg [msg]
  (js/console.log [:msg-received msg]))

(go
  (let [{:keys [new] :as msg} (&amp;lt;! c)]
    (receive-msg msg)))
;; [:msg-received {:hi &quot;here&quot;}]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When I compare at the &lt;code&gt;macroexpand-1&lt;/code&gt; results, I found that in the failure case, the let-binding for &lt;code&gt;new&lt;/code&gt; seems to be shadowing the JS &lt;code&gt;new&lt;/code&gt; keyword, see the &lt;code&gt;inst_23688&lt;/code&gt; symbol before &lt;code&gt;cljs.core/PersistentVector&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  (macroexpand-1
    '(go
       (let [{:keys [new] :as msg} (&amp;lt;! c)]
         (js/console.log [:msg-received msg]))))
  =&amp;gt; ...
      (clojure.core/let
           [inst_23687
            (clojure.core/aget state_23694 2)
            inst_23688
            (cljs.core/get inst_23687 :new)
            inst_23689
            (. cljs.core/PersistentVector -EMPTY-NODE)
            inst_23690
            (js* &quot;[~{},~{}]&quot; :msg-received inst_23687)
            inst_23691
            (inst_23688
             cljs.core/PersistentVector
             nil
             2
             5
             inst_23689
             inst_23690
             nil)
            inst_23692
            (js/console.log inst_23691)
            state_23694
            state_23694]
           (cljs.core.async.impl.ioc-helpers/return-chan
            state_23694
            inst_23692))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Whereas in the successful case, there's the plain &lt;code&gt;new&lt;/code&gt; JS keyword before the &lt;code&gt;cljs.core/PersistentVector&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  (macroexpand-1
    '(go
       (let [{:keys [a] :as msg} (&amp;lt;! c)]
         (js/console.log [:msg-received msg]))))
=&amp;gt; ...
(clojure.core/let
           [inst_24256
            (clojure.core/aget state_24263 2)
            inst_24257
            (cljs.core/get inst_24256 :a)
            inst_24258
            (. cljs.core/PersistentVector -EMPTY-NODE)
            inst_24259
            (js* &quot;[~{},~{}]&quot; :msg-received inst_24256)
            inst_24260
            (new cljs.core/PersistentVector nil 2 5 inst_24258 inst_24259 nil)
            inst_24261
            (js/console.log inst_24260)
            state_24263
            (cljs.core.async.impl.ioc-macros/aset-all!
             state_24263
             8
             inst_24257)]
           (cljs.core.async.impl.ioc-helpers/return-chan
            state_24263
            inst_24261))
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/339/cljs-a-local-named-new-breaks-go-macro-in-cljs-not-in-clj?show=10738#a10738</guid>
<pubDate>Tue, 29 Jun 2021 00:59:26 +0000</pubDate>
</item>
<item>
<title>Answered: Easy to hang the current thread with `(a/&lt;!! (a/map f chs))` when `chs` is empty</title>
<link>https://ask.clojure.org/index.php/10652/easy-to-hang-the-current-thread-with-map-chs-when-chs-is-empty?show=10653#a10653</link>
<description>&lt;p&gt;Logged as &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/ASYNC-238&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-238&lt;/a&gt;&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10652/easy-to-hang-the-current-thread-with-map-chs-when-chs-is-empty?show=10653#a10653</guid>
<pubDate>Mon, 24 May 2021 16:12:14 +0000</pubDate>
</item>
<item>
<title>Answered: Strategies for diagnosing core.async code that is unexpectedly blocking the main thread?</title>
<link>https://ask.clojure.org/index.php/10190/strategies-diagnosing-async-unexpectedly-blocking-thread?show=10191#a10191</link>
<description>&lt;p&gt;(1) The producer half of the 2nd test puts 2, the consumer (reading evens) reads 2; the producer puts 1, but the consumer isn't consuming odds yet, so the producer waits, and from the consumer's point of view the channel of evens &quot;never closes&quot;, so the consumer sticks at the first &lt;code&gt;&amp;lt;!!&lt;/code&gt;. &lt;/p&gt;
&lt;p&gt;(2) The hang is the best problem to have because you can insert prints and figure out what's hanging.  Sub-optimal balance is harder to get clarity on.&lt;/p&gt;
&lt;p&gt;(3) The simpler, the better. &lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10190/strategies-diagnosing-async-unexpectedly-blocking-thread?show=10191#a10191</guid>
<pubDate>Sun, 14 Feb 2021 22:11:02 +0000</pubDate>
</item>
<item>
<title>Answered: How to do a blocking put on a channel ?</title>
<link>https://ask.clojure.org/index.php/9924/how-to-do-a-blocking-put-on-a-channel?show=9925#a9925</link>
<description>&lt;p&gt;It's not clear to me how you could get that error from that code. Could you post either the real code or a standalone example that reproduces the problem?&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9924/how-to-do-a-blocking-put-on-a-channel?show=9925#a9925</guid>
<pubDate>Tue, 08 Dec 2020 20:06:37 +0000</pubDate>
</item>
<item>
<title>Answered: documentation issues on clojurescript promises interop</title>
<link>https://ask.clojure.org/index.php/9609/documentation-issues-on-clojurescript-promises-interop?show=9610#a9610</link>
<description>&lt;p&gt;can you explain what issue you are running into? What does exposed as a function mean?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/t/async ❯❯❯ clj -A:cljs:async -m cljs.main -re node -r
ClojureScript 1.10.773
cljs.user=&amp;gt; (require '[clojure.core.async :as a :refer [go]])
nil
cljs.user=&amp;gt; (doc go)
-------------------------
cljs.core.async/go
([&amp;amp; body])
Macro
  Asynchronously executes the body, returning immediately to the
  calling thread. Additionally, any visible calls to &amp;lt;!, &amp;gt;! and alt!/alts!
  channel operations within the body will block (if necessary) by
  'parking' the calling thread rather than tying up an OS thread (or
  the only JS thread when in ClojureScript). Upon completion of the
  operation, the body will be resumed.

  Returns a channel which will receive the result of the body when
  completed

nil
cljs.user=&amp;gt;(let [x (go 3)] (go (prn (a/&amp;lt;! x))))
#object[cljs.core.async.impl.channels.ManyToManyChannel]
cljs.user=&amp;gt; 3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Moreover, this should be fine.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macros can be referred in this way: &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.clojurescript.org/about/differences#_namespaces&quot;&gt;https://www.clojurescript.org/about/differences#_namespaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;go is defined as a macro: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/core.async/blob/master/src/main/clojure/cljs/core/async.clj#L12&quot;&gt;https://github.com/clojure/core.async/blob/master/src/main/clojure/cljs/core/async.clj#L12&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;go is referred as a macro from async.cljs: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/clojure/core.async/blob/master/src/main/clojure/cljs/core/async.cljs#L19&quot;&gt;https://github.com/clojure/core.async/blob/master/src/main/clojure/cljs/core/async.cljs#L19&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;relevant part from above: &lt;br&gt;
&amp;gt; Implicit macro loading: If a namespace is required or used, and that namespace itself requires or uses macros from its own namespace, then the macros will be implicitly required or used using the same specifications. Furthermore, in this case, macro vars may be included in a :refer or :only spec. This oftentimes leads to simplified library usage, such that the consuming namespace need not be concerned about explicitly distinguishing between whether certain vars are functions or macros. For example:&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9609/documentation-issues-on-clojurescript-promises-interop?show=9610#a9610</guid>
<pubDate>Fri, 18 Sep 2020 02:57:07 +0000</pubDate>
</item>
<item>
<title>Answered: (CLJS) finally-block prevents exception throw in go-block</title>
<link>https://ask.clojure.org/index.php/9587/cljs-finally-block-prevents-exception-throw-in-go-block?show=9588#a9588</link>
<description>&lt;p&gt;One line reproduce:&lt;br&gt;
&lt;code&gt;clojure -Srepro -Sdeps '{:deps {org.clojure/clojurescript {:mvn/version &quot;1.10.520&quot;} org.clojure/core.async {:mvn/version &quot;1.3.610&quot;}}}' -m cljs.main -re node -e &quot;(require '[clojure.core.async :refer [go]]) (go (try (try (throw (ex-info &quot;err&quot; {:ex 42})) (catch js/Error e (throw e)) (finally (prn :finally))) (catch js/Error e (prn :catch2))))&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I tested with {clj,cljs} x {with-go,without-go} and it only work on &lt;code&gt;cljs&lt;/code&gt; with &lt;code&gt;go&lt;/code&gt;&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9587/cljs-finally-block-prevents-exception-throw-in-go-block?show=9588#a9588</guid>
<pubDate>Mon, 07 Sep 2020 16:21:16 +0000</pubDate>
</item>
<item>
<title>Answered: Add additional arity to the ex-handler [core.async]</title>
<link>https://ask.clojure.org/index.php/9257/add-additional-arity-to-the-ex-handler-core-async?show=9258#a9258</link>
<description>&lt;p&gt;This is a duplicate of an existing question/ticket:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.clojure.org/index.php/349/allow-second-arity-channel-handler-which-takes-well-throwable&quot;&gt;https://ask.clojure.org/index.php/349/allow-second-arity-channel-handler-which-takes-well-throwable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/ASYNC-114&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-114&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9257/add-additional-arity-to-the-ex-handler-core-async?show=9258#a9258</guid>
<pubDate>Mon, 20 Apr 2020 23:02:34 +0000</pubDate>
</item>
<item>
<title>Answered: Add support for &lt;!! in cljs</title>
<link>https://ask.clojure.org/index.php/9136/add-support-for-in-cljs?show=9188#a9188</link>
<description>&lt;p&gt;You can use &lt;a rel=&quot;nofollow&quot; href=&quot;https://cljdoc.org/d/org.clojure/core.async/1.0.567/api/cljs.core.async#poll!&quot;&gt;poll!&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://cljdoc.org/d/org.clojure/core.async/1.0.567/api/cljs.core.async#offer!&quot;&gt;offer!&lt;/a&gt; instead, they are the non-blocking equivalent. Just keep in mind, they will not &quot;wait&quot; for a value to be available, so you need to keep polling yourself, or be sure there should be one.&lt;/p&gt;
&lt;p&gt;Like others have said, &lt;code&gt;&amp;lt;!!&lt;/code&gt; doesn't make sense in the context of JavaScript, since you never want to block the main thread, and it would need too in order to perform the &quot;waiting&quot; operation.&lt;/p&gt;
&lt;p&gt;There also exists &lt;a rel=&quot;nofollow&quot; href=&quot;https://cljdoc.org/d/org.clojure/core.async/1.0.567/api/cljs.core.async#take!&quot;&gt;take!&lt;/a&gt;, if you don't want to implement polling yourself, it will do it for you (well more efficiently), and call you back when the value is available with it.&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9136/add-support-for-in-cljs?show=9188#a9188</guid>
<pubDate>Tue, 24 Mar 2020 20:37:11 +0000</pubDate>
</item>
<item>
<title>Answered: core.async bug: &quot;No more than 1024 pending takes are allowed&quot; assertion involving 'alt!'</title>
<link>https://ask.clojure.org/index.php/9025/core-async-more-pending-takes-allowed-assertion-involving?show=9080#a9080</link>
<description>&lt;p&gt;Dear Mr. Sperber,&lt;/p&gt;
&lt;p&gt;i do not think i understand the problem very well. (... also... and tbh i have not really spent much thought on this :-).... )&lt;/p&gt;
&lt;p&gt;Having said that, i just ran:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(ns asyncbug.core
  (:gen-class)
  (:require [clojure.core.async :as async]))


(defn -main
  &quot;I don't do a whole lot ... yet.&quot;
  [&amp;amp; args]

  (dotimes [n 5000]
    (comment &quot;
- start 1024 threads that all alt! on a common channel (ch) and
  on an individual channel (x)
- the common channel remains 'empty' all the time
- wakeup all theads twice via the x channel, which makes them loop.
- this quickly raises multiple
  'No more than 1024 pending takes are allowed on a single channel.'
  assertions in an async-dispatch thread.
&quot;)
    (let [ch (async/chan)

          threads clojure.core.async.impl.protocols/MAX-QUEUE-SIZE
          wakeups 2
          x-chans
          (mapv (fn [n]
                  (let [x (async/chan)]
                    (async/go-loop []
                      (async/alt!
                        ch nil
                        x ([_] (recur))))
                    x))
                (range threads))]
      (doseq [x x-chans]
        (dotimes [n wakeups]
          (async/&amp;gt;!! x 42)))
      (async/close! ch))

    (println &quot;iteration: &quot; n))

  (println &quot;Hello, World!&quot;))
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;pre&gt;&lt;code&gt;(defproject asyncbug &quot;0.1.0-SNAPSHOT&quot;
  :description &quot;FIXME: write description&quot;
  :url &quot;http://example.com/FIXME&quot;
  :license {:name &quot;EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0&quot;
            :url &quot;https://www.eclipse.org/legal/epl-2.0/&quot;}
  :dependencies [[org.clojure/clojure &quot;1.10.0&quot;]
                 [org.clojure/core.async &quot;0.7.559&quot;]]
  :main ^:skip-aot asyncbug.core
  :target-path &quot;target/%s&quot;
  :profiles {:uberjar {:aot :all}})
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;pre&gt;&lt;code&gt;java -version
openjdk version &quot;11.0.6&quot; 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode, sharing)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;which eventually yields the &quot;Hello, World!&quot;.&lt;/p&gt;
&lt;p&gt;again.... i am really not quite sure about what is ( supposed to be ) going on here.... so i may be doing this all wrong :-).... &lt;/p&gt;
&lt;p&gt;i have also given this a quick go using the core-async 0.6.532 version you mentioned, but aborted after 32 successful iterations..... until then no AssertionError had been raised.&lt;/p&gt;
&lt;p&gt;i am sorry i could not be of more help to you.&lt;/p&gt;
&lt;p&gt;Best Regards,&lt;br&gt;
Florian Tauber&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9025/core-async-more-pending-takes-allowed-assertion-involving?show=9080#a9080</guid>
<pubDate>Sun, 09 Feb 2020 03:55:06 +0000</pubDate>
</item>
<item>
<title>Answered: A literal meta in cljs.core.async</title>
<link>https://ask.clojure.org/index.php/8966/a-literal-meta-in-cljs-core-async?show=8972#a8972</link>
<description>&lt;p&gt;related : &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojure.atlassian.net/browse/ASYNC-192&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-192&lt;/a&gt;&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8966/a-literal-meta-in-cljs-core-async?show=8972#a8972</guid>
<pubDate>Sat, 28 Dec 2019 08:49:18 +0000</pubDate>
</item>
<item>
<title>Answered: core.async pipeline arguments order</title>
<link>https://ask.clojure.org/index.php/8968/core-async-pipeline-arguments-order?show=8969#a8969</link>
<description>&lt;p&gt;Iirc, the idea was to match &lt;code&gt;into&lt;/code&gt;.&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8968/core-async-pipeline-arguments-order?show=8969#a8969</guid>
<pubDate>Thu, 26 Dec 2019 14:09:18 +0000</pubDate>
</item>
<item>
<title>Answered: where is the blocking operation?</title>
<link>https://ask.clojure.org/index.php/8805/where-is-the-blocking-operation?show=8846#a8846</link>
<description>&lt;p&gt;As a general policy, blocking operations should not be performed in the scope of a go block, and that includes the core.async blocking operations like &amp;gt;!!. So, yes - the problem here is that the pipeline code violates this policy. In practice, you're correct in this particular case that using &amp;gt;!! on an empty channel of size 1 won't block (but it still violates the policy of intent).&lt;/p&gt;
&lt;p&gt;Using put! would be another option, however there is also a bigger conceptual issue here that pipeline purports to use &quot;parallelism n&quot;. However, by putting those tasks in go blocks, you are actually subject to a max parallelism of the go thread pool, which is typically 8, and that presumes no one else is using the go block thread pool, so it could even be less than that. And secondly, if the user happens to do a blocking operation in pipeline (which they shouldn't), then they can easily lock up the whole system.&lt;/p&gt;
&lt;p&gt;Switching to use the same strategy as pipeline-blocking (using a separate caching thread pool) addresses the parallelism issue. However, this may not be the last change in this regard - we may still switch to use an explicit fixed size compute thread pool, rather than a caching thread pool which would separate these again. So, no plans to deprecate anything - the user is still stating an intent that makes an important difference here.&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8805/where-is-the-blocking-operation?show=8846#a8846</guid>
<pubDate>Fri, 08 Nov 2019 19:15:33 +0000</pubDate>
</item>
<item>
<title>Answered: Is alt!! actually not completing put operations when the channel closes?</title>
<link>https://ask.clojure.org/index.php/8610/alt-actually-not-completing-operations-when-channel-closes?show=8611#a8611</link>
<description>&lt;p&gt;Can you give an  example?&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8610/alt-actually-not-completing-operations-when-channel-closes?show=8611#a8611</guid>
<pubDate>Tue, 17 Sep 2019 12:45:50 +0000</pubDate>
</item>
<item>
<title>Answered: Any plans for core.async with Project Loom?</title>
<link>https://ask.clojure.org/index.php/8196/any-plans-for-core-async-with-project-loom?show=8199#a8199</link>
<description>&lt;p&gt;No plans right now, seems fairly speculative still.&lt;/p&gt;
</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8196/any-plans-for-core-async-with-project-loom?show=8199#a8199</guid>
<pubDate>Fri, 26 Jul 2019 13:16:25 +0000</pubDate>
</item>
<item>
<title>Answered: `&lt;!` inside nested `let` inside `go` block erroneously yields &quot;&lt;! not used inside go block&quot; error</title>
<link>https://ask.clojure.org/index.php/600/inside-nested-inside-block-erroneously-yields-inside-block?show=641#a641</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-161&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-161&lt;/a&gt; (reported by johanatan)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/600/inside-nested-inside-block-erroneously-yields-inside-block?show=641#a641</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: mult distribution behavior doesn't work as intended</title>
<link>https://ask.clojure.org/index.php/595/mult-distribution-behavior-doesnt-work-as-intended?show=619#a619</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-127&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-127&lt;/a&gt; (reported by lgs32a)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/595/mult-distribution-behavior-doesnt-work-as-intended?show=619#a619</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: (CLJS) go! or &quot;go-now&quot; for CLJS</title>
<link>https://ask.clojure.org/index.php/365/cljs-go-or-go-now-for-cljs?show=579#a579</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-131&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-131&lt;/a&gt; (reported by thheller)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/365/cljs-go-or-go-now-for-cljs?show=579#a579</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: implement IDeref, IBlockingDeref for channels</title>
<link>https://ask.clojure.org/index.php/366/implement-ideref-iblockingderef-for-channels?show=582#a582</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-102&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-102&lt;/a&gt; (reported by stu)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/366/implement-ideref-iblockingderef-for-channels?show=582#a582</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Puts committed on take! when buffer is full and buffer contains an expanding transducer</title>
<link>https://ask.clojure.org/index.php/590/puts-committed-buffer-buffer-contains-expanding-transducer?show=608#a608</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-210&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-210&lt;/a&gt; (reported by brianru)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/590/puts-committed-buffer-buffer-contains-expanding-transducer?show=608#a608</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: (CLJS) A let-binding named 'arguments' not bound in go block on nodejs</title>
<link>https://ask.clojure.org/index.php/591/cljs-let-binding-named-arguments-not-bound-in-go-block-nodejs?show=610#a610</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-118&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-118&lt;/a&gt; (reported by alex+import)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/591/cljs-let-binding-named-arguments-not-bound-in-go-block-nodejs?show=610#a610</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: some locals are not cleared in go blocks</title>
<link>https://ask.clojure.org/index.php/592/some-locals-are-not-cleared-in-go-blocks?show=612#a612</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-219&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-219&lt;/a&gt; (reported by leonoel)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/592/some-locals-are-not-cleared-in-go-blocks?show=612#a612</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: can't assign instance fields in go blocks</title>
<link>https://ask.clojure.org/index.php/593/cant-assign-instance-fields-in-go-blocks?show=615#a615</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-222&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-222&lt;/a&gt; (reported by leonoel)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/593/cant-assign-instance-fields-in-go-blocks?show=615#a615</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: pipeline does not stop consuming from when to is closed</title>
<link>https://ask.clojure.org/index.php/594/pipeline-does-not-stop-consuming-from-when-to-is-closed?show=616#a616</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-217&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-217&lt;/a&gt; (reported by alexmiller)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/594/pipeline-does-not-stop-consuming-from-when-to-is-closed?show=616#a616</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Can we get a generic sink operation?</title>
<link>https://ask.clojure.org/index.php/597/can-we-get-a-generic-sink-operation?show=633#a633</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-67&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-67&lt;/a&gt; (reported by gshayban)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/597/can-we-get-a-generic-sink-operation?show=633#a633</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Allow user supplied executor/thread-pool (and potentially other options) to be used in go, thread macros and chan</title>
<link>https://ask.clojure.org/index.php/596/supplied-executor-thread-potentially-options-thread-macros?show=621#a621</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-94&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-94&lt;/a&gt; (reported by mpenet)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/596/supplied-executor-thread-potentially-options-thread-macros?show=621#a621</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Closing a tap with a pending item blocks the mult input channel</title>
<link>https://ask.clojure.org/index.php/601/closing-tap-with-pending-item-blocks-the-mult-input-channel?show=647#a647</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-125&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-125&lt;/a&gt; (reported by alex+import)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/601/closing-tap-with-pending-item-blocks-the-mult-input-channel?show=647#a647</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: (CLJS) Cannot use (js-debugger) in go block</title>
<link>https://ask.clojure.org/index.php/598/cljs-cannot-use-js-debugger-in-go-block?show=635#a635</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-215&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-215&lt;/a&gt; (reported by alex+import)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/598/cljs-cannot-use-js-debugger-in-go-block?show=635#a635</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: (CLJS) Can't close over locals in #js in go</title>
<link>https://ask.clojure.org/index.php/607/cljs-cant-close-over-locals-in-js-in-go?show=665#a665</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-132&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-132&lt;/a&gt; (reported by lgs32a)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/607/cljs-cant-close-over-locals-in-js-in-go?show=665#a665</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Processes spawned by mix never terminate</title>
<link>https://ask.clojure.org/index.php/606/processes-spawned-by-mix-never-terminate?show=662#a662</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-39&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-39&lt;/a&gt; (reported by lgs32a)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/606/processes-spawned-by-mix-never-terminate?show=662#a662</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: (CLJS) try-catch-finally broken inside go-blocks</title>
<link>https://ask.clojure.org/index.php/599/cljs-try-catch-finally-broken-inside-go-blocks?show=638#a638</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-73&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-73&lt;/a&gt; (reported by the-kenny)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/599/cljs-try-catch-finally-broken-inside-go-blocks?show=638#a638</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Add drain! to consume and discard a channel</title>
<link>https://ask.clojure.org/index.php/604/add-drain-to-consume-and-discard-a-channel?show=658#a658</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-66&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-66&lt;/a&gt; (reported by gshayban)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/604/add-drain-to-consume-and-discard-a-channel?show=658#a658</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: let in go block leaks memory</title>
<link>https://ask.clojure.org/index.php/603/let-in-go-block-leaks-memory?show=656#a656</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-223&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-223&lt;/a&gt; (reported by alex+import)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/603/let-in-go-block-leaks-memory?show=656#a656</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Provide a chan? function to determine if a given var is a channel</title>
<link>https://ask.clojure.org/index.php/602/provide-a-chan-function-to-determine-if-given-var-is-channel?show=650#a650</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-74&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-74&lt;/a&gt; (reported by exi)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/602/provide-a-chan-function-to-determine-if-given-var-is-channel?show=650#a650</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Completion arity of transducer is called twice</title>
<link>https://ask.clojure.org/index.php/605/completion-arity-of-transducer-is-called-twice?show=660#a660</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-183&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-183&lt;/a&gt; (reported by wagjo)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/605/completion-arity-of-transducer-is-called-twice?show=660#a660</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
<item>
<title>Answered: Race condition when closing mults</title>
<link>https://ask.clojure.org/index.php/364/race-condition-when-closing-mults?show=572#a572</link>
<description>Reference: &lt;a href=&quot;https://clojure.atlassian.net/browse/ASYNC-64&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://clojure.atlassian.net/browse/ASYNC-64&lt;/a&gt; (reported by alex+import)</description>
<category>core.async</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/364/race-condition-when-closing-mults?show=572#a572</guid>
<pubDate>Wed, 26 Jun 2019 12:00:00 +0000</pubDate>
</item>
</channel>
</rss>