github.com/status-im/status-go@v1.1.0/protocol/tt/backoff.go (about)

     1  package tt
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/cenkalti/backoff/v3"
     7  )
     8  
     9  type BackOffOption func(*backoff.ExponentialBackOff)
    10  
    11  func RetryWithBackOff(o func() error, options ...BackOffOption) error {
    12  	b := backoff.ExponentialBackOff{
    13  		InitialInterval:     time.Millisecond * 100,
    14  		RandomizationFactor: 0.1,
    15  		Multiplier:          1,
    16  		MaxInterval:         time.Second,
    17  		MaxElapsedTime:      time.Second * 10,
    18  		Clock:               backoff.SystemClock,
    19  	}
    20  	for _, option := range options {
    21  		option(&b)
    22  	}
    23  	b.Reset()
    24  	return backoff.Retry(o, &b)
    25  }