It is likely that the sample application is outdated. I do not have an rfid-capable device right now to test but if you can post the relevant sections of your code, it is more likely that someone will be able to find if there is anything wrong with it.
I think the sample application is not outdated, it works and it demonstrates the basic functionalities of the plugin. What was strange that it simply does not use this callback. I would rater say that the api docs are outdated.
Anyway, I have solved the issue and it turned out that in practice I do not really need to use the operationCompleted callback because every operation has it's special callback response to which I can subscribe. Eg. when writing a tag memory the plugin calls the status handler with args.method='tagWrite' arguments. When setting a singulation the plugin calls the same callback with args.method='setSingulation' etc. This strategy works very well. After tracing which action cause which response with calling a callback I was able to write a rocket solid async program which suits all my needs.
Regarding the sample app I have to note that it seems that I ran into another problem - the singulation access filter demo behaves very strange. I did not have a time to diagnose the problem and fully understand what happens but it seems that the applied filter settings are preserved and sometimes it is impossible to clear them. I had problems with writing memory access passwords as well. I will dive into these issues in the near future and I will start a new thread to discuss them.