Sequentially reduce a collection to a single value using promises. p-reduce iterates over an iterable, applying an asynchronous reducer function to each element. Similar to Array.prototype.reduce, it leverages Promises to handle asynchronous operations within the reduction process. Ideal for processing large datasets or performing I/O-bound tasks within a sequence, providing a cleaner alternative to nested Promises or callbacks. It supports custom initial values and ensures proper error propagation.