@xiangli-cmu Actually, it's a little more Go friendly to check the error/escape condition first instead of using an if/else:

```go
for {
  select {
  case <-closeChan:
    return nil
  case event = <-eventChan:
    if event == nil || event.Action != store.Expire {
      break L
    }
    events = append(events, event)
  }
```