Use buffered channels to prevent goroutine leaks