Since the keepChannel is used to send data, not just for synchronizaiton, so make it a buffered channel can avoid unnecessary goroutine yields.
Since the keepChannel is used to send data, not just for synchronizaiton, so make it a buffered channel can avoid unnecessary goroutine yields.