Add contexts.
diff --git a/CodeReviewComments.md b/CodeReviewComments.md
index 43c6750..454806d 100644
--- a/CodeReviewComments.md
+++ b/CodeReviewComments.md
@@ -10,6 +10,7 @@
* [gofmt](#gofmt)
* [Comment Sentences](#comment-sentences)
+* [Contexts](#contexts)
* [Declaring Empty Slices](#declaring-empty-slices)
* [Doc Comments](#doc-comments)
* [Don't Panic](#dont-panic)
@@ -51,6 +52,40 @@
and so on.
+## Contexts
+
+Values of the context.Context type carry security credentials,
+tracing information, deadlines, and cancellation signals across API
+and process boundaries. Go programs pass Contexts explicitly along
+the entire function call chain from incoming RPCs and HTTP requests
+to outgoing requests.
+
+Most functions that use a Context should accept it as their first parameter:
+
+```
+func F(ctx context.Context, /* other arguments */) {}
+```
+
+A function that is never request-specific may use context.Background(),
+but err on the side of passing a Context even if you think you don't need
+to. The default case is to pass a Context; only use context.Background()
+directly if you have a good reason why the alternative is a mistake.
+
+Don't add a Context member to a struct type; instead add a ctx parameter
+to each method on that type that needs to pass it along. The one exception
+is for methods whose signature must match an interface in the standard library
+or in a third party library.
+
+Don't create custom Context types or use interfaces other than Context in
+function signatures.
+
+If you have application data to pass around, put it in a parameter,
+in the receiver, in globals, or, if it truly belongs there, in a Context value.
+
+Contexts are immutable, so it's fine to pass the same ctx to multiple
+calls that share the same deadline, cancellation signal, credentials,
+parent trace, etc.
+
## Declaring Empty Slices
When declaring a slice, use