context.AfterFunc(ctx, f) (Go 1.21+)?context.AfterFunc(ctx, f) регистрирует функцию f, которая будет вызвана в отдельной горутине после отмены контекста ctx. Возвращает функцию stop для отмены регистрации (если контекст ещё не отменён).
Удобно для cleanup-логики, привязанной к жизненному циклу контекста: закрытие соединений, отмена подзадач.
stop := context.AfterFunc(ctx, func() {
conn.Close()
})
defer stop() // отменить регистрацию при раннем выходе