You also need to handle other types like LOCK_FAILURE, IO_FAILURE and REJECTED_CURRENT_BRANCH.

Yes, even though above you checked for what should be the REJECTED_CURRENT_BRANCH case, another thread might have changed HEAD in the meantime and JGit is going to check again during the delete invocation.  You need to handle that here.