That's absolutely right. Looking deeper into `androidExec`, it is (currently) impossible to call `exec()` without a `callbackId`, and there is always a success callback function. even if you pass `null` into `exec()`

I see two ways to make this code correct:

1. Add an additional boolean parameter, `hasCallback`, to the four API calls, and use that value instead to determine whether we need to call anything. On the JS side, we would use `!!cb` to provide the boolean argument. This is explicit, and means that we can avoid using the bridge and firing any callbacks in cordova when they are not necessary.

2. Accept that there is always a callback context, and always will be a callback context, and remove the special cases. This works -- it's basically the code that has already been tested, as the special cases are never being executed. It results in a slightly less efficient runtime, but (possibly) clearer code.