code: func (fw *filteredWatch) loop() {
  	defer close(fw.result)
  	for event := range fw.incoming.ResultChan() {
  		filtered, keep := fw.f(event)
  		if keep {
  			fw.result <- filtered
  		}
  	}
  }
docs: // loop waits for new values, filters them, and resends them.