* Add defer cancelFunc() to ensure context is always cancelled * Add ctx.Done() case in goroutine select to prevent goroutine leak * Fixes memory accumulation issue where goroutines were not properly cleaned up