I don't think we need nsITimer.   This code lazily updates the whitelist whenever an amount of time has expired _and_ there's a new submission about to be made to the observatory.  One silly thing is that the cert update is async in the background while the observatory submission continues.  It might make sense to chain callbacks so that the submission logic waits for maybeUpdateCertWhitelist() to finish its async work so that the submission uses the very latest whitelist.  However that is going to be a bit ugly...