Closed
Description
Your library is poorly written and definitely not lightweight because you create your own serial queue and perform all requests syncronously! Author of this lib doesn't understand multithreading and how things should be done.
You either leave synchronization for user so that he creates his own serial queue and decide if he want sync or async (and this is lightweight), or you create serial queue and make two versions for each function - sync and async.
Currently user will always block 2 threads, inner serial queue's thread and his own queue's thread that he uses not to block main one (or even main thread).
I would suggest to implement second approach not to break existing api.