Changed the keepChannel to buffered channel.

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