streams = $streams; } /** @inheritDoc */ public function read(): Promise { if ($this->reading) { throw new PendingReadError; } if (!$this->streams) { return new Success(null); } return call(function () { $this->reading = true; try { while ($this->streams) { $chunk = yield $this->streams[0]->read(); if ($chunk === null) { \array_shift($this->streams); continue; } return $chunk; } return null; } finally { $this->reading = false; } }); } }