A goroutine leak occurs when a goroutine blocks indefinitely — usually waiting on a channel or lock that is never resolved — consuming memory and system resources silently over time.
Goroutine waiting on a channel that is never written to or closed
Missing context cancellation — goroutine has no way to know the request was cancelled
Infinite loop without a done signal
Deadlocked mutual sends — two goroutines each waiting for the other to receive
HTTP response body not read and closed — underlying goroutine in transport stays alive