- private function give($promise, Generator $gen) {
- if ($promise instanceof PromiseInterface) {
- $promise->then(function($result) use($gen) {
- if (($promise = $gen->send($result))) {
- $this->give($promise, $gen);
- }
- });
- } else {
- all($promise)->then(function($results) use($gen) {
- if (($promise = $gen->send($results))) {
- $this->give($promise, $gen);
- }
- });
+ private function give(mixed $promise, Generator $gen) : void {
+ if ($promise instanceof \Traversable) {
+ $promise = iterator_to_array($promise);
+ }
+ if (is_array($promise)) {
+ $promise = ($this->reduce)($promise);