Allow an alternative method of using plum.refresh, where you give it a callback. The engine will refresh and invoke the callback until it returns true.