fix goroutine leak when error occurs while watching