What canceled my Go context?
Les erreurs "context canceled" ne disent pas toujours pourquoi l’annulation survient, ce qui a conduit Go à introduire des API de cause pour attacher une raison explicite. WithTimeoutCause et WithCancelCause permettent d’étiqueter les délais et les annulations avec une cause personnalisée, mais des subtilités exigent de bien orchestrer les cancel() et les timers. Un exemple montre qu’un timer peut déclencher une cause spécifique lorsque le délai expire, mais que la sortie normale peut ne pas enregistrer cette cause. Pour s’assurer que toutes les voies conservent une cause utile, l’article présente des schémas alternatifs, comme gérer le timer manuellement avec une seule CancelCauseFunc ou empiler des contextes avec des causes distinctes. Enfin, l’article recommande d’injecter une cause au niveau du middleware et d’observer à la fois l’erreur et la cause pour faciliter le débogage et le tri des incidents.