buffered channel for listner, logging timeouts
avoid writing to closed channel by serializing writes for each listener