updated-packages
This commit is contained in:
		
							
								
								
									
										28
									
								
								vendor/guzzlehttp/promises/src/Coroutine.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/guzzlehttp/promises/src/Coroutine.php
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,5 @@ | ||||
| <?php | ||||
|  | ||||
| namespace GuzzleHttp\Promise; | ||||
|  | ||||
| use Exception; | ||||
| @@ -9,7 +10,7 @@ use Throwable; | ||||
|  * Creates a promise that is resolved using a generator that yields values or | ||||
|  * promises (somewhat similar to C#'s async keyword). | ||||
|  * | ||||
|  * When called, the coroutine function will start an instance of the generator | ||||
|  * When called, the Coroutine::of method will start an instance of the generator | ||||
|  * and returns a promise that is fulfilled with its final yielded value. | ||||
|  * | ||||
|  * Control is returned back to the generator when the yielded promise settles. | ||||
| @@ -22,7 +23,7 @@ use Throwable; | ||||
|  *         return new Promise\FulfilledPromise($value); | ||||
|  *     } | ||||
|  * | ||||
|  *     $promise = Promise\coroutine(function () { | ||||
|  *     $promise = Promise\Coroutine::of(function () { | ||||
|  *         $value = (yield createPromise('a')); | ||||
|  *         try { | ||||
|  *             $value = (yield createPromise($value . 'b')); | ||||
| @@ -38,6 +39,7 @@ use Throwable; | ||||
|  * @param callable $generatorFn Generator function to wrap into a promise. | ||||
|  * | ||||
|  * @return Promise | ||||
|  * | ||||
|  * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration | ||||
|  */ | ||||
| final class Coroutine implements PromiseInterface | ||||
| @@ -65,7 +67,23 @@ final class Coroutine implements PromiseInterface | ||||
|                 $this->currentPromise->wait(); | ||||
|             } | ||||
|         }); | ||||
|         $this->nextCoroutine($this->generator->current()); | ||||
|         try { | ||||
|             $this->nextCoroutine($this->generator->current()); | ||||
|         } catch (\Exception $exception) { | ||||
|             $this->result->reject($exception); | ||||
|         } catch (Throwable $throwable) { | ||||
|             $this->result->reject($throwable); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Create a new coroutine. | ||||
|      * | ||||
|      * @return self | ||||
|      */ | ||||
|     public static function of(callable $generatorFn) | ||||
|     { | ||||
|         return new self($generatorFn); | ||||
|     } | ||||
|  | ||||
|     public function then( | ||||
| @@ -108,7 +126,7 @@ final class Coroutine implements PromiseInterface | ||||
|  | ||||
|     private function nextCoroutine($yielded) | ||||
|     { | ||||
|         $this->currentPromise = promise_for($yielded) | ||||
|         $this->currentPromise = Create::promiseFor($yielded) | ||||
|             ->then([$this, '_handleSuccess'], [$this, '_handleFailure']); | ||||
|     } | ||||
|  | ||||
| @@ -139,7 +157,7 @@ final class Coroutine implements PromiseInterface | ||||
|     { | ||||
|         unset($this->currentPromise); | ||||
|         try { | ||||
|             $nextYield = $this->generator->throw(exception_for($reason)); | ||||
|             $nextYield = $this->generator->throw(Create::exceptionFor($reason)); | ||||
|             // The throw was caught, so keep iterating on the coroutine | ||||
|             $this->nextCoroutine($nextYield); | ||||
|         } catch (Exception $exception) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 RafficMohammed
					RafficMohammed