在 Clash 的 picker 模组中,作者模仿 errGroup 利用 Context 和 Goroutine 实现了可以超时、可以取消的异步任务管理器,在一般异步任务中,通过 Goroutine 和 sync.Waitgroup 可轻松实现高并发,但在需要返回结果、错误信息、若其中某个 Goroutine 出错则取消其他 Goroutine 的情况,则需要通过 Context 和 Channel 管理 Goroutine,当有错误时,向 Channel 发送消息通知,而其他 Goroutine 则根据 Channel 取消相关的任务。