This is confusing code - looks like magic why it's non-recursive, particularly as it looks like it's calling `Startable.START` which is a `MethodEffector`.

Could perhaps be cleaned up with an `@EffectorAsync` that makes it clearer it's delegating to a different task. And perhaps where it would fail-fast rather than enter a recursive loop if no task is defined. But I haven't thought that through fully.

I'm ok with merging this now, given the javadoc is clear. Could add an `@Beta` though for us to change semantics without concern for backwards compatibility.