tailrec'd the TerminationMatcher retry