implement `taps` - multiple events version of `tap`