src/Executor/ReferenceExecutor.php
private function promiseReduce(array $values, callable $callback, $initialValue)
    {
        return array_reduce(
            $values,
            function ($previous, $value) use ($callback) {
                $promise = $this->getPromise($previous);
                if ($promise) {
                    return $promise->then(static function ($resolved) use ($callback, $value) {
                        return $callback($resolved, $value);
                    });
                }

                return $callback($previous, $value);
            },
            $initialValue
        );
    }
private function promiseReduce(array $values, callable $callback, $initialValue)
    {
        return array_reduce(
            $values,
            function ($previous, $value) use ($callback) {
                $promise = $this->getPromise($previous);
                if ($promise) {
                    return $promise->then(static function ($resolved) use ($callback, $value) {
                        return $callback($resolved, $value);
                    });
                }

                return $callback($previous, $value);
            },
            $initialValue
        );
    }
private function promiseReduce ( array $ values , callable $ callback , $ initialValue ) { return array_reduce ( $ values , function ( $ previous , $ value ) use ( $ callback ) { $ promise = $ this -> getPromise ( $ previous ) ; if ( $ promise ) { return $ promise -> then ( static function ( $ resolved ) use ( $ callback , $ value ) { return $ callback ( $ resolved , $ value ) ; } ) ; } return $ callback ( $ previous , $ value ) ; } , $ initialValue ) ; }
Similar to array_reduce(), however the reducing callback may return
a Promise, in which case reduction will continue after each promise resolves.

If the callback does not return a Promise, then this function will also not
return a Promise.

@param mixed[]            $values
@param Promise|mixed|null $initialValue

@return mixed[]
Similar to array_reduce () however the reducing callback may return a Promise in which case reduction will continue after each promise resolves .