use a semaphore in wait_for_call

instead of eventlet.sleep in a tight loop