Design constraints

The stack runs in the context of the calling process and our meeting engine will create several threads. Some of the function calls are async and so the app needs to register call backs and process the events that comes back from the stack.