Function operations in JavaScript has a long and twisty history. That history can give essential context behind this proposal.
For information on what “Stage 1” and “Stage 2” mean, read about the TC39 Process.
More information about contributing is also available in CONTRIBUTING.md.
The pipe champion group presents F# pipes (a tacit-unary-function-application operator) for Stage 2 twice to TC39, being unsuccessful both times due to pushback from multiple other TC39 representatives’ memory performance concerns, syntax concerns about await, and concerns about encouraging ecosystem bifurcation/forking.
For more information, see the pipe proposal’s HISTORY.md.
Inspired by pipe issue #233, @js-choi creates a new proposal, proposal-function-helpers, that would add several Function helper methods. These include Function.pipe, pipeAsync, flow, and flowAsync.
On 2021-10, proposal-function-helpers is presented to the Committee plenary for Stage 1. The Committee rejects the proposal due to its being overly broad and requests that it be split up into multiple proposals.
In the plenary on July 21, proposal-function-pipe-flow was formally presented to the Committee, and it was rejected for Stage 1. The Committee generally found its use cases not compelling enough compared to the pipe operator. Its champion subsequently withdrew it from consideration. (Eventually, after the pipe operator gains users, pain points with the pipe operator may be enough motivation to revive proposal-function-pipe-flow, but that would not occur for a long time.)