I've been digging into libubus, because I need it to track events, but it appears to have two issues. One is that it's not really asynchronous: it seems to call poll() itself, and also start its own event loops. And of course it's tightly integrated with libubox, even though it's not using libubox's asynchronous behavior in a systematic way.
What this means is that (1) I can't integrate it into my event loop without peeling out the libubox dependency, and (2) if I peel out the libubox dependency, calls to libubus can still block.
I'm seriously contemplating fixing this, but before I do, I'd like anybody who reads this and understands it to fight me on the topic of whether this is necessary. Am I just missing something here, or have others run into this as well?