function whenFinished(WritableObjectStream $stream) : Promise { $promise = __promise($graceful = true); $stream->on('finish', [$promise, 'resolve']); $stream->on('error', [$promise, 'resolve']); $promise->when(function () use($stream, $promise) { $stream->removeListener('finish', [$promise, 'resolve']); $stream->removeListener('error', [$promise, 'resolve']); }); return $promise; }
/** * @throws StreamEndedException */ public function write($object, callable $onFlush = null) : bool { return $this->writable->write($object, $onFlush); }