             f = state.getBranches()[0]
             f.forEach (f, i) =>
               choice.branch "#{choice.id}_#{i}", (bnode) =>
-                log.values "#{@name or @id} #{choice} resulted via subtree in #{typeof f.value} %s", f.value
+                log.values "#{@name or @id} #{choice} resulted via branch #{bnode} in #{typeof f.value} %s", f.value
                 bnode.registerSubleaf f.choice, true, true
                 f.value
             return

        # Thenable returned, make subtree
        val.then (c, r) ->
          state.handleResult state.fulfilled, 0, c, r, onResult
          return
        val.else (c, e) ->
          state.handleResult state.rejected, 0, c, e, onResult
          return
        return
      # Straight-up value returned
      log.values "#{@name or @id} #{choice} resulted directly in #{typeof val} %s", val
      choice.set 'data', val if isActive choice
      choice.state = State.FULFILLED if isActive choice

    try
      val = node.callback choice, data
      if val and typeof val.then is 'function' and typeof val.else is 'function'
        log.values "#{@name or @id} #{choice} returned subtree #{val.tree.name or val.tree.id} #{val.id}"
        onResult = (state, value) =>
          return unless state.isComplete()
          if state.countFulfilled() is 1
