func newEventCatcher(logger *streamlog.StreamLogger) *eventCatcher { catcher := &eventCatcher{ start: time.Now(), logger: logger, in: logger.Subscribe("endtoend"), out: make(chan interface{}, 20), } go func() { for event := range catcher.in { endTime := event.(interface { EventTime() time.Time }).EventTime() if endTime.Before(catcher.start) { continue } catcher.out <- event } close(catcher.out) }() return catcher }