ensure cancel on BoundedWorkQueueItem wait for the synchronising semaphore

this prevents signaling the semaphore when all the slots are free