I have the following code:
func Call(ctx context.Context, payload Payload) (Response, error) {
req, err := http.NewRequest(...) // Some code that creates request from payload
ctx, cancel = context.withTimeout(ctx, time.Duration(3) * time.Second)
defer cancel()
return http.DefaultClient.Do(req)
}
What would happen if I didn't put defer cancel()
in there? go vet
warned this
the cancel function returned by context.WithTimeout should be called, not discarded, to avoid a context leak
How will the context be leaked and what impact will this have? Thanks