Check `(WindowManager.getRunningApps().hasOwnProperty[origin] || !WindowManager.getRunningApps()[origin].killed)` before killing the app, then listen for an *appterminated* event instead of passing a callback.

*kill()* only returns early if `!isRunning(origin)` or `runningApps[origin].killed`. And *isRunning()* just checks `runningApps.hasOwnProperty(origin)`. Where *runningApps* is the object returned by *getRunningApps()*. It still doesn't always call the callback, even if it doesn't return early. But it does always dispatch the event if it doesn't return early.