code: func NewGoroutinePriorityPool(ctx context.Context, maxConcurrentJobs int) *GoroutinePriorityPool {
  	pool := &GoroutinePriorityPool{
  		ctx:   ctx,
  		sema:  newSemaphore(maxConcurrentJobs),
  		tasks: priorityQueue{},
  	}
  	return pool
  }
docs: // NewGoroutinePriorityPool creates a new goroutine pool with at most
  // maxConcurrentJobs.
  //
  // Each task is run according to the priority of each item.