code: def channel(self, size=-1):
          
          sender, recver = self.router()
          if size > 0:
              recver = recver.pipe(self.queue(size))
          return vanilla.message.Pair(sender, recver.pipe(self.dealer()))
docs: ::
  
              send --\    +---------+  /--> recv
                      +-> | Channel | -+
              send --/    +---------+  \--> recv
  
          A Channel can have many senders and many recvers. By default it is
          unbuffered, but you can create buffered Channels by specifying a size.
          They're structurally equivalent to channels in Go. It's implementation
          is *literally* a `Router`_ piped to a `Dealer`_, with an optional
          `Queue`_ in between.