Hmm... this might be useful elsewhere too.  Non-blocking - what do you think of a random interval function, instead of a repeating interval function?