Oops, thanks for that - seems the results from the first run of the example somehow got lost in the final version and I didn't notice.
The order of the output is dependent on when each call finished - they run in parallel, so it's not guaranteed that functions will end in the order they were invoked.