+2
internal/providers/braintree.go
+2
internal/providers/braintree.go
+8
-1
internal/providers/provider.go
+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