L29 — context: cancellation, timeout, deadline, value

Ba module tương tác cho phép bạn "chạm" vào 3 cơ chế cốt lõi của package context: cây huỷ lan từ trên xuống, timeout cascade trong HTTP request, và walk-up tìm value qua chuỗi WithValue. Mọi minh hoạ đều standalone, mở file:// là chạy được.

1. Context tree — cancel lan từ trên xuống

Click vào một node bất kỳ để cancel nó. Mọi descendant (cháu/chắt) cũng bị cancel theo — đây là tính chất "propagation chỉ đi xuống" của context tree. Cha và anh em không ảnh hưởng. Mỗi node hiển thị ctx.Err() sau khi bị cancel.

Click node = gọi cancel() trên node đó

2. HTTP request — timeout cascade

Mô phỏng request flow: client → HTTP handler → DB query → external API. Kéo slider để thay đổi handler timeoutDB latency. Nếu DB chậm hơn timeout, ctx.Done() fire, DB bị cancel (thanh đỏ), handler trả 504 Gateway Timeout. Đường kẻ đỏ đứt nét chính là deadline của context.

3. ctx.Value(key) — walk up chain

Khi gọi ctx.Value(key), runtime đi từ ctx hiện tại lên cha, kiểm tra từng node, gặp node nào có key trùng thì trả luôn value. Nếu đi tới Background mà vẫn không thấy → trả nil. Chọn key từ dropdown để xem traversal animate qua chuỗi.

Chọn key rồi bấm Lookup để xem.