Apply arbitrary action during recursive generator function
Good things:


all lines terminated with a semi-comon
strict equality used when checking for objects


I would suggest using const by default since none of the variables/functions get reassigned. If you determine reassignment is necessary then use let. This will help avoid accidental re-assignment.

And is the variable naming oclone Hungarian notation? If so, why not use it for all variables instead of cloned variables?