for i, ctx := range ctxs {
stop := context.AfterFunc(ctx, func() {
defer d.lock.Unlock()
if task.matchResult == nil {
d.tasks.Remove(task)
task.wake(d.logger, &matchResult{ctxErr: ctx.Err(), ctxErrIdx: i})
}
})
defer stop() // nolint:revive // there's only ever a small number of contexts