code: func (p *MiddlewarePoller) Poll(b *Bot, dest chan Update, stop chan struct{}) {
  	cap := 1
  	if p.Capacity > 1 {
  		cap = p.Capacity
  	}
  
  	middle := make(chan Update, cap)
  	stopPoller := make(chan struct{})
  
  	go p.Poller.Poll(b, middle, stopPoller)
  
  	for {
  		select {
  		// call to stop
  		case <-stop:
  			stopPoller <- struct{}{}
  
  		// poller is done
  		case <-stopPoller:
  			close(stop)
  			return
  
  		case upd := <-middle:
  			if p.Filter(&upd) {
  				dest <- upd
  			}
  		}
  	}
  }
docs: // Poll sieves updates through middleware filter.