Nesting without passing ids
There is no separate call to start a trace: the first span with no active parent becomes the root of a new one. A span started inside another becomes its child automatically. In Node.js the active span follows the asynchronous call chain, so concurrent requests each build their own tree and never see each other's spans. For work that overlaps in time, such as parallel requests, a leaf span that you end yourself keeps the tree correct.