@matttproud 
We can't just close `consumer.in` channel. Sending data to closed channel invokes panic. We must remove consumer from consumers list (`es.staled <- consumer` code) and after that we can close `consumer.in` channel safely (main control loop does it).

Situation when we send data in `consumer.in` after idle timeout is possible. I don't see any problem here. Main control loop never wait on sending in `consumer.in`. So there isn't any deadlocks.