One problem is that the whitelist check is currently situated just after the cache update code.
If I move it so it gets cached, and set mresult.asked, then the check won't run again (until you reboot) and the prompt won't show either. The boolean whitelisted just made sure the prompt was skipped if the extra was found to be whitelisted.