code: def consume(self, f):
          
          @self.hub.spawn
          def _():
              for item in self:
                  # TODO: think through whether trapping for HALT here is a good
                  # idea
                  try:
                      f(item)
                  except vanilla.exception.Halt:
                      self.close()
                      break
docs: Creates a sink which consumes all values for this Recver. *f* is a
          callable which takes a single argument. All values sent on this
          Recver's Sender will be passed to *f* for processing. Unlike *map*
          however consume terminates this chain::
  
              sender, recver = h.pipe
  
              @recver.consume
              def _(data):
                  logging.info(data)
  
              sender.send('Hello') # logs 'Hello'