code: func (ih *instrumentedHandler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
  	requestId, err := uuid.ParseHex(req.Header.Get("X-Vcap-Request-Id"))
  	if err != nil {
  		requestId, err = GenerateUuid()
  		if err != nil {
  			log.Printf("failed to generate request ID: %v\n", err)
  			requestId = &uuid.UUID{}
  		}
  		req.Header.Set("X-Vcap-Request-Id", requestId.String())
  	}
  	rw.Header().Set("X-Vcap-Request-Id", requestId.String())
  
  	startTime := time.Now()
  
  	instrumentedWriter := &instrumentedResponseWriter{writer: rw, statusCode: 200}
  	ih.handler.ServeHTTP(instrumentedWriter, req)
  
  	startStopEvent := factories.NewHttpStartStop(req, instrumentedWriter.statusCode, instrumentedWriter.contentLength, events.PeerType_Server, requestId)
  	startStopEvent.StartTimestamp = proto.Int64(startTime.UnixNano())
  
  	err = ih.emitter.Emit(startStopEvent)
  	if err != nil {
  		log.Printf("failed to emit startstop event: %v\n", err)
  	}
  }
docs: // ServeHTTP wraps the given http.Handler ServerHTTP function.  It provides
  // accounting metrics for the http.Request / http.Response life-cycle