for i, ctx := range ctxs {
stop := context.AfterFunc(ctx, func() {
defer d.lock.Unlock()
if poller.matchResult == nil {
// if poll was being forwarded, it would be absent from heap even though
// matchResult == nil
if poller.matchHeapIndex >= 0 {
d.pollers.Remove(poller)
}
}
})