title: Bacon update properties depend on each other cyclic introducing bus
body: <p>I have two properties that might depend on each other so I introduce a bus:</p>
  
  <pre><code>let esDealOne1 = Bacon.later(0, true);
  let esDealOne2 = Bacon.later(1000, true);
  
  
  let bHanging = new Bacon.Bus();
  
  let esSetCards = bHanging.filter(_ =&gt; _.cards);
  
  let pHanging = HangingStateProperty(esSetCards);
  
  let pDrawer = DrawerProperty(bHanging, esDealOne1);
  
  let pStacks = [
    StackProperty(0, esDealOne2, pHanging),
  ];
  
  function HangingStateProperty(esSetCards) {
    let setCards = (_, cards) =&gt; {
      return { ..._, ...cards };
    };
  
    return Bacon.update({},
                        [esSetCards, setCards]);
  }
  
  function DrawerProperty(bHanging, esDealOne1) {
      let dealOne1 = (_) =&gt; {
          let card = _.usefulProperty;
          bHanging.push({ cards: [card] });
          return _; };
  
      return Bacon.update({},
          [esDealOne1, dealOne1]);
  }
  
  function StackProperty(n, esAllDealOne2, pHanging) {
    let esDealOne2 = esAllDealOne2.filter(_ =&gt; _.i === n);
  
    let dealOne2 = (_, {i}, hangingState) =&gt; {
      let cards = hangingState.cards;
  
      _.property = cards;
  
      return _;
    };
  
    return Bacon.update({},
                        [esDealOne2, pHanging, dealOne2]);
  }
  </code></pre>
  
  <p>How can I get rid of this bus?</p>