More work
First approach with asynchronous semaphore working
Switchable block/non blocking for debugging
Working async semaphore