fix a concurrency issue: start() called before the 4th notification could fire