in v2/processor.go [241:256]
func (p *Processor) process(ctx context.Context, receiverEx *ReceiverEx, message *azservicebus.ReceivedMessage) {
receiverName := receiverEx.name
p.concurrencyTokens <- struct{}{}
go func() {
msgContext, cancel := context.WithCancel(ctx)
// cancel messageContext when we get out of this goroutine
defer cancel()
defer func() {
<-p.concurrencyTokens
processor.Metric.IncMessageHandled(receiverName, message)
processor.Metric.DecConcurrentMessageCount(receiverName, message)
}()
processor.Metric.IncConcurrentMessageCount(receiverName, message)
p.handle.Handle(msgContext, receiverEx.sbReceiver, message)
}()
}