      :cljs
      (t/async done
        (go
-         (let [ch (m/pure c/channel-monad 3)
-               rs (m/>>= ch (fn [x] (m/return (inc x))))]
-           (t/is (= 4 (a/<! rs)))
+         (let [ch (m/pure c/channel-monad 1)
+               result (m/>>= ch (fn [x] (m/return (inc x))))]
+           ;; (println 2222 @(a/<! result))
+
+           (t/is (= 2 (a/<! result)))
            (done))))))
 
 

(ns cats.labs.channel-spec
  #?(:cljs (:require-macros [cljs.core.async.macros :refer [go]]))
  (:require #?@(:clj  [[clojure.core.async :as a :refer [go]]
                       [clojure.test :as t]]
                :cljs [
                       [cljs.core.async :as a]
                       [cljs.test :as t]])
            [cats.core :as m]
            [cats.labs.channel :as c]))

(t/deftest channel-as-functor
  #?(:clj

           (t/is (= (a/<! ch1) (a/<! rs)))
           (done))))))

(t/deftest third-monad-law-associativity
  #?(:clj
     (let [rs1 (m/>>= (m/mlet [x  (c/with-value 2)
