First we perform someCalculation and then we multiply the result by 10, then we filter the result for positive integers and then we divide by 2.

But, for each of these steps we create an additional Future and schedule it to run on our designated ExecutionContext—in this case introducing significant overhead for these very simple operations.

A cheaper way (sometimes)

If we know that we’re going to use the same ExecutionContext, and we’re willing to make more calculations in one go, we can since Scala 2.12 use transform and run the transformations on Try directly,
as transform takes a function from Try[T] to Try[U], which looks something like this: