// Note that calling MustOffer is the only way that matcher knows there are spooled tasks in the
// backlog, in absence of a pending MustOffer call, the forwarding logic assumes that backlog is empty.
func (tm *TaskMatcher) MustOffer(ctx context.Context, task *internalTask, interruptCh <-chan struct{}) error {
matcher.go
tm.registerBacklogTask(task)
defer tm.unregisterBacklogTask(task)
if err := tm.rateLimiter.Wait(ctx); err != nil {
return err
}