. * * @author Daniil Gentili * @copyright 2016-2023 Daniil Gentili * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 * @link https://docs.madelineproto.xyz MadelineProto documentation */ namespace danog\MadelineProto; use Amp\Cancellation; use Amp\Future; /** * @internal * * @template T */ final class WrappedFuture { /** * @param Future $f */ public function __construct(private readonly Future $f) { } /** * @return bool True if the operation has completed. */ public function isComplete(): bool { return $this->f->isComplete(); } /** * Awaits the operation to complete. * * Throws an exception if the operation fails. * * @return T */ public function await(?Cancellation $cancellation = null): mixed { $result = $this->f->await($cancellation); if (\is_callable($result)) { throw $result(); } return $result; } }