Hmm.. I think I'm ok as the reset() is only called by ProcessInput in the top level RunCmd() function.  I think a race condition could happen if reset() was called between CommandChain::Start() and CommandChain::Wait() though.  In anycase, I'll do a run through the race-detector.