tailrec'd the TerminationMatch retry