Files
zeekayandHanzo Dev da299df77d the corporate name is Lux Industries Inc
Lux Partners Limited is not the entity behind this work. Every place the
old name stood — copyright lines, site footers, brand config, legal and
compliance text — now names the company that actually holds it.

lux.fund is the exception and is not renamed to match: that site belongs
to Lux Assets Management LLC, a different company, and it says so.

Two kinds of line were left for a person rather than rewritten. A dated
news item recording that Lux Partners Limited was established in the Isle
of Man is a historical fact, and renaming it would falsify the record. And
a sentence asserting that the company is domiciled in the Isle of Man is a
claim about a jurisdiction, not a name — an Inc or an LLC is not an Isle
of Man company, so swapping the name there would assert something untrue.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-28 13:05:15 -07:00

54 lines
1.0 KiB
Go

// Copyright (C) 2025, Lux Industries Inc All rights reserved.
// See the file LICENSE for licensing terms.
package evm
import (
"context"
"errors"
"fmt"
"time"
)
func retry[T any](
fn func() (T, error),
maxAttempts int,
retryInterval time.Duration,
) (T, error) {
const defaultRetryInterval = 2 * time.Second
if retryInterval == 0 {
retryInterval = defaultRetryInterval
}
var (
result T
cumErr error
)
for attempt := 0; attempt < maxAttempts; attempt++ {
var err error
result, err = fn()
if err == nil {
return result, nil
}
cumErr = errors.Join(cumErr, err)
time.Sleep(retryInterval)
}
return result, fmt.Errorf(
"maximum retry attempts %d reached: cumulated err = %w",
maxAttempts,
cumErr,
)
}
func retryWithContextGen[T any](
ctxGen func() (context.Context, context.CancelFunc),
fn func(context.Context) (T, error),
maxAttempts int,
retryInterval time.Duration,
) (T, error) {
return retry(func() (T, error) {
ctx, cancel := ctxGen()
defer cancel()
return fn(ctx)
}, maxAttempts, retryInterval)
}