Elasticsearch BulkRequestHandler listener callback execution

In line https://github.com/elastic/elasticsearch/blob/master/server/src/main/java/org/elasticsearch/action/bulk/BulkRequestHandler.java#L58

Curious why the semaphore is acquired after the beforeBulk callback? While not a big issue, I was hoping the entire bulk, right from its beginning till the end (inclusive of all the callbacks) be protected by the semaphore. Right now it's possible for N+1 instances of beforeBulk running concurrently where N = concurrency