Injection or whatever fancy term used for passing function pointers around is ofent write only.
With method chaining at each step you have only the complexity of the current method inputs to deal with: that's a far better noise/signal ratio.
Once he was done debugging it he put it all back to how it was originally...
The mind boggles.
I mean, it looks like the same level as adding explicit temporary variable because the debugger won't give provide values of the different part of an expression assigned to a third variable. That's a way to circumvent the tool limitation, just as you can add a tap or map in a middle of a chain if the debugger is too rudimentary to provide more conveniency.
The reason code is terser is because it forces to streamline the process to a single output at a time, rather than an unrestricted number of variable control flow and return combined in a way that is easy to accumulate but all the more complicated to grasp later on.