@matttproud 
Even if we would like to close `consumer.in` just after idle timer alarm we can't avoid race condition because we can't detect the timer alarm and close channel in atomic way.

```go
case <-time.After(es.idleTimeout):
    // here somebody may send data in consumer.in
    close(consumer.in)
```