code: func NewReporter(bufferSize, poolSize int, transport http.RoundTripper) Reporter {
  	r := new(BasicReporter)
  	if transport == nil {
  		transport = &http.Transport{
  			// Allow for an idle connection per goroutine.
  			MaxIdleConnsPerHost: poolSize,
  		}
  	}
  	r.client = &http.Client{Transport: transport}
  	r.reports = make(chan *statReport, bufferSize)
  	r.done = make(chan bool)
  	r.wg = new(sync.WaitGroup)
  	for i := 0; i < poolSize; i++ {
  		r.wg.Add(1)
  		go r.processReports()
  	}
  	return r
  }
docs: // NewReporter returns a new Reporter.  You must specify the channel bufferSize and the
  // goroutine poolSize.  You can pass in nil for the transport and it will create an
  // http transport with MaxIdleConnsPerHost set to the goroutine poolSize.  Note if you
  // pass in your own transport, it's a good idea to have its MaxIdleConnsPerHost be set
  // to at least the poolSize to allow for effective connection reuse.