The guarantee is that it is asynchronous and that callbacks are invoked in the order that events happen. You have to write asynchronous code to use it. You could of course run it on one thread, and it will still be asynchronous, but given only one thread it would not be parallel. You could also just block every callback thread and starve the network pool (to the same effect).
But these are poor choices. If you require order you impose it using critical sections of your own.