See #16 as example. We should ensure all goroutines are exited before close all control channels and other stuff.