Don't increase the semaphore is a callback is going to get called 

increasing the semaphore in all situations will make the callbacks waiting for the semaphore run for free, even there's no space to run them.