Interesting.. that concept doesn't quite align with my understanding of map / flatMap.
To me, `flatMap` is simply `map` followed by `flatten`, so it doesn't have any notion of 'takes only the first output':
```
scala> List(1,2,3)
res0: List[Int] = List(1, 2, 3)
scala> res0.map(i => List(i, i+1))
res1: List[List[Int]] = List(List(1, 2), List(2, 3), List(3, 4))
scala> res1.flatten
res2: List[Int] = List(1, 2, 2, 3, 3, 4)
scala> res0.flatMap(i => List(i, i+1))
res3: List[Int] = List(1, 2, 2, 3, 3, 4)
```
You can think of a Tinkerpop traversal as a List. So in my world a flatten step would transform a nested traversal like `Traversal[Traversal[Something]]` into a `Traversal[Something]`. It's fine with me to leave as is, just wanted to raise my concerns from a functional programming perspective.