> If the Go language ever comes to the point where I’d have to write this
  n, err := r.Read(context.TODO(), p)
Manually passing around a context everywhere sounds about as palatable as manually checking every return for error.
Exactly, the snippets needs at least three lines of inane error checking boilerplate and variable juggling.