code: func NewReporter(url string, opts ...ReporterOption) reporter.Reporter {
  	r := httpReporter{
  		url:           url,
  		logger:        log.New(os.Stderr, "", log.LstdFlags),
  		client:        &http.Client{Timeout: defaultTimeout},
  		batchInterval: defaultBatchInterval,
  		batchSize:     defaultBatchSize,
  		maxBacklog:    defaultMaxBacklog,
  		batch:         []*model.SpanModel{},
  		spanC:         make(chan *model.SpanModel),
  		quit:          make(chan struct{}, 1),
  		shutdown:      make(chan error, 1),
  		sendMtx:       &sync.Mutex{},
  		batchMtx:      &sync.Mutex{},
  		serializer:    reporter.JSONSerializer{},
  	}
  
  	for _, opt := range opts {
  		opt(&r)
  	}
  
  	go r.loop()
  
  	return &r
  }
docs: // NewReporter returns a new HTTP Reporter.
  // url should be the endpoint to send the spans to, e.g.
  // http://localhost:9411/api/v2/spans