func NewReconciler(name string, r reconcile.Reconciler, l ratelimiter.RateLimiter) *Reconciler {
	return &Reconciler{name: name, inner: r, limit: l, limited: make(map[string]struct{})}
}
NewReconciler wraps the supplied Reconciler, ensuring requests are passed to
it no more frequently than the supplied RateLimiter allows. Multiple uniquely
named Reconcilers can share the same RateLimiter.
package ratelimiter
import (
	"context"
	"sync"
	"time"
	"sigs.k8s.io/controller-runtime/pkg/ratelimiter"
	"sigs.k8s.io/controller-runtime/pkg/reconcile"
)
type Reconciler struct {
	name  string
	inner reconcile.Reconciler
	limit ratelimiter.RateLimiter
	limited  map[string]struct{}
	limitedL sync.RWMutex
}