this repo has no description

:sparkles: cancel request when user cancel requests

Changed files
+11 -1
internal
+2
internal/providers/braintree.go
··· 52 52 if err != nil { 53 53 return nil, err 54 54 } 55 + defer response.Body.Close() 56 + 55 57 return b.responseCharge(response) 56 58 } 57 59
+8 -1
internal/providers/provider.go
··· 39 39 attempts := 0 40 40 41 41 for _, provider := range p.providers { 42 - dataCh, errCh := p.charge(ctx, payment, provider) 42 + requestCtx, cancel := context.WithTimeout(ctx, p.timeout) 43 + defer cancel() 44 + 45 + dataCh, errCh := p.charge(requestCtx, payment, provider) 43 46 select { 44 47 case data := <-dataCh: 45 48 p.logger.Debug("[Payment] Received request successfully", ··· 60 63 zap.String("provider", provider.GetName()), 61 64 zap.Int("attempt", attempts)) 62 65 66 + cancel() 67 + 63 68 err = errors.New("Timeout") 64 69 continue 70 + case <-ctx.Done(): 71 + return nil, ctx.Err() 65 72 } 66 73 } 67 74
+1
internal/providers/stripe.go
··· 48 48 if err != nil { 49 49 return nil, err 50 50 } 51 + defer response.Body.Close() 51 52 52 53 return b.responseCharge(response) 53 54 }