From 5c62c7d566ac3a883a1f573a43b59f7f040edd9d Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Sat, 23 Nov 2019 12:37:01 +0100 Subject: [PATCH] Simplify promise handling --- .../Installer/InstallationManager.php | 30 ++++++------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/src/Composer/Installer/InstallationManager.php b/src/Composer/Installer/InstallationManager.php index 0ee5b01f6..7cf3c7128 100644 --- a/src/Composer/Installer/InstallationManager.php +++ b/src/Composer/Installer/InstallationManager.php @@ -229,29 +229,15 @@ class InstallationManager $loop = $this->loop; $io = $this->io; - $promise = new \React\Promise\Promise(function ($resolve, $reject) use ($installer, $jobType, $package, $initialPackage) { - $promise = $installer->prepare($jobType, $package, $initialPackage); - if (null === $promise) { - $promise = new \React\Promise\Promise(function ($resolve, $reject) { $resolve(); }); - } - - return $promise->then($resolve, $reject); - }); + $promise = $installer->prepare($jobType, $package, $initialPackage); + if (null === $promise) { + $promise = new \React\Promise\Promise(function ($resolve, $reject) { $resolve(); }); + } $promise = $promise->then(function () use ($jobType, $installManager, $repo, $operation) { - $promise = $installManager->$jobType($repo, $operation); - if (null === $promise) { - $promise = new \React\Promise\Promise(function ($resolve, $reject) { $resolve(); }); - } - - return $promise; + return $installManager->$jobType($repo, $operation); })->then(function () use ($jobType, $installer, $package, $initialPackage) { - $promise = $installer->cleanup($jobType, $package, $initialPackage); - if (null === $promise) { - $promise = new \React\Promise\Promise(function ($resolve, $reject) { $resolve(); }); - } - - return $promise; + return $installer->cleanup($jobType, $package, $initialPackage); })->then(function () use ($jobType, $installer, $package, $initialPackage, $runScripts, $dispatcher, $installManager, $devMode, $repo, $operations, $operation) { $repo->write($devMode, $installManager); @@ -263,7 +249,9 @@ class InstallationManager $this->io->writeError(' ' . ucfirst($jobType) .' of '.$package->getPrettyName().' failed'); $promise = $installer->cleanup($jobType, $package, $initialPackage); - $loop->wait(array($promise)); + if ($promise) { + $loop->wait(array($promise)); + } throw $e; });