func NewReaderPool(maxRate int, maxBurst time.Duration) *ReaderPool {
	return &ReaderPool{
		maxRate:  maxRate,
		maxBurst: maxBurst,
		givenOut: make(map[ThrottlerReader]struct{}),
	}
}
func NewReaderPool(maxRate int, maxBurst time.Duration) *ReaderPool {
	return &ReaderPool{
		maxRate:  maxRate,
		maxBurst: maxBurst,
		givenOut: make(map[ThrottlerReader]struct{}),
	}
}
// NewReaderPool creates a pool that ensures the writers it wraps will
// respect an overall maxRate, with maxBurst resolution. The semantics
// of the wrapped writers are the same as those of using a plain
// ThrottledReader.