A function that takes a base fetch and returns the pipelined fetch function
Remarks
The first middleware listed wraps outermost (runs first on request, last on response).
Request flow: first middleware → ... → last middleware → fetch.
Response flow: fetch → last middleware → ... → first middleware.
Composes middleware executors in left-to-right order (pipeline style).