code: func ServeJSON(w http.ResponseWriter, err error) error {
  	w.Header().Set("Content-Type", "application/json")
  	var sc int
  
  	switch errs := err.(type) {
  	case Errors:
  		if len(errs) < 1 {
  			break
  		}
  
  		if err, ok := errs[0].(ErrorCoder); ok {
  			sc = err.ErrorCode().Descriptor().HTTPStatusCode
  		}
  	case ErrorCoder:
  		sc = errs.ErrorCode().Descriptor().HTTPStatusCode
  		err = Errors{err} // create an envelope.
  	default:
  		// We just have an unhandled error type, so just place in an envelope
  		// and move along.
  		err = Errors{err}
  	}
  
  	if sc == 0 {
  		sc = http.StatusInternalServerError
  	}
  
  	w.WriteHeader(sc)
  
  	return json.NewEncoder(w).Encode(err)
  }
docs: // ServeJSON attempts to serve the errcode in a JSON envelope. It marshals err
  // and sets the content-type header to 'application/json'. It will handle
  // ErrorCoder and Errors, and if necessary will create an envelope.