I realized I cut some corners on the timeouts anyways, since this method was used repeatedly but for waitForLogMessage you really want one conceptual timeout.  So doing this with fixing that (by having it constantly calculate a new timeout to pass to grabAtLeastOneNewMessage so that it's the underlying executeAsyncScript that explodes.