обычно самому слушать канал done нужно только если вы реализовываете какие-то примитивы, зависящие от контекста. на практике обычно контекст просто передаётся другим операциям, зависящим от контекста и они вернут ошибку, если в процессе контекст завершился. эта ошибка, как правило, и ведёт к логическому завершению вызывающей функции