Almost certainly that's it, although perhaps just single inheritance. The parent array is not an array of the immediate parents(1), but of the successive generations of parent, grandparent, greatgrandparent, etc.

(1) It might be, but a system of A-from-B-from-C seems more likely.

But by all that's holy, don't use gdmf exceptions to report "I don't support that".

agreed, the array is likely a list of parents and grandparents walking up the tree, in order of distance from current object.
Also, the difference is also the value of success, so it'll give 'true' or 'false' up, not just the message

More seriously, I too was thinking that you'd fill in the "parent" array with the parent objects in your desired MRO (as Python calls it). This isn't general-purpose inheritance though as it doesn't seem to passing "this" through.

Everybody is assuming that the people that created this piece of code named their variables to indicate a hierarchy structure. There's nothing in this code that indicates any form of inheritance, subclassing, superclassing, or tree structures, other than a name that might be misleading. It's simply iteration over a an array of maps of strings to functions.

The real WTF here is swallowing exceptions and using exceptions for flow control. The code 'duplication' might be another.

More seriously, I too was thinking that you'd fill in the "parent" array with the parent objects in your desired MRO (as Python calls it). This isn't general-purpose inheritance though as it doesn't seem to passing "this" through.

And there are IDE / VCS combinations that don't play well together, usually when one of them is a WTF choice. I'm privileged to work with Perforce whose Xcode integration was dropped years ago. To view when and who wrote a particular line, you have to use the Time-lapse view in the Perforce GUI which is a buggy Qt app with bad usability. Thus, //#BZ7350.

The "parent" thing is a very small detail over all the WTF-ery there is in this small snippet.

The two branches of the if/else that do exactly the same thing except for a very small detail (use "info" or "error").
So much copy/paste that even the comment is copied.
The concept of accessing an array inside a try/catch instead of testing if the value exists.
The empty catch without even a comment.

For more context, now that the blow has softened:

This tries to manage documents tree. Thus the "parent" is not a code concept but a business concept. The whole story falls apart. I should have provided more context. Sorry.

This is Javascript. No inheritance whatsoever.

BZ stands for BugZilla. Obviously I can't look for it because we migrated long ago.

The "parent" variable is never declared. I don't see how iterating on it ever worked.

The method this code resides in is never called, anyway (phew! disaster averted)

The biggest WTF of all: this code uses YUI, like most of the app. In 2018.

As far as I'm concerned, I'm the only child with 2 parents. But to be fair... In a normal (computerscience) hierarchy, a child with multiple parents is just an upside-down tree.. So I must be the parent and my parents are my children.

Addendum 2018-10-08 18:56:
/addendum: I never understand the strange method of placing a comment, where I 'reply to someone' without being able to quote :(