newMessageChannel ::MessageBus a -> IO (MessageChannel a)
newMessageChannel (MessageBus wChan) = do
  latch <- newLatch
  rChan <- atomically $ dupTChan wChan
  return $ MessageChannel latch rChan wChan
newMessageChannel ::MessageBus a -> IO (MessageChannel a)
newMessageChannel (MessageBus wChan) = do
  latch <- newLatch
  rChan <- atomically $ dupTChan wChan
  return $ MessageChannel latch rChan wChan
newMessageChannel (MessageBus wChan) = do
  latch <- newLatch
  rChan <- atomically $ dupTChan wChan
  return $ MessageChannel latch rChan wChan