@TomMalbran - turns out that doesn't quite work either. I think the reason is that if we add a `done()` handler for the render promise immediately after creating it, there's a danger that it will resolve before all the nodes we need to open are actually open. In the current version, that doesn't happen because `_whenRenderedResolve()` doesn't get called until after we've at least kicked off the reopening of all the previously open nodes in the `reopen.jstree` handler in `_renderTree()`. So we do need to store the render promises until then (without attaching their done handlers), and at that point we basically have to deal with something like the current `_whenRenderedResolve()`, although (as you mentioned before) there might be some clever way to avoid running through the array multiple times.

So, after all that :), I'm again inclined to merge this as is, given that I've tested it a fair amount and I know it works, and there's a fair amount of potential fragility here.