|
3 | 3 | namespace VaasSdk; |
4 | 4 |
|
5 | 5 | use Amp\ByteStream\ReadableStream; |
| 6 | +use Amp\CompositeCancellation; |
6 | 7 | use Amp\DeferredCancellation; |
| 8 | +use Amp\DeferredFuture; |
7 | 9 | use Amp\Http\Client\HttpClient; |
8 | 10 | use Amp\Http\Client\HttpClientBuilder; |
9 | 11 | use Amp\Http\Client\HttpException; |
@@ -358,17 +360,23 @@ private function UploadStream( |
358 | 360 | $request->setBody(StreamedContent::fromStream($fileStream, $fileSize)); |
359 | 361 | $request->addHeader("Content-Length", $fileSize); |
360 | 362 | $request->addHeader("Authorization", $uploadToken); |
361 | | - |
362 | | - $response = $this->httpClient->request($request, new TimeoutCancellation($this->uploadTimeoutInSeconds)); |
| 363 | + $timeoutCancellation = new TimeoutCancellation($this->uploadTimeoutInSeconds); |
| 364 | + $response = $this->httpClient->request($request, |
| 365 | + new CompositeCancellation($timeoutCancellation, $cancellation->getCancellation())); |
363 | 366 | if ($response->getStatus() > 399) { |
364 | 367 | $reason = $response->getBody()->buffer($cancellation->getCancellation()); |
365 | 368 | throw new UploadFailedException($reason, $response->getStatus()); |
366 | 369 | } |
367 | 370 | } catch (\Exception $e) { |
368 | | - if ($e instanceof HttpException) { |
369 | | - throw new UploadFailedException($e->getMessage(), $e->getCode()); |
370 | | - } |
371 | | - throw new VaasClientException($e->getMessage()); |
| 371 | + $this->vaasConnection->RemoveResponse($requestId); |
| 372 | + if ($e instanceof HttpException) { |
| 373 | + $uploadFailedException = new UploadFailedException($e->getMessage(), $e->getCode()); |
| 374 | + $futureResponse->getFuture()->error($uploadFailedException); |
| 375 | + throw new $uploadFailedException; |
| 376 | + } |
| 377 | + $vaasClientException = new VaasClientException($e->getMessage()); |
| 378 | + $futureResponse->getFuture()->error($vaasClientException); |
| 379 | + throw $vaasClientException; |
372 | 380 | } finally { |
373 | 381 | EventLoop::cancel($pingTimer); |
374 | 382 | $cancellation->cancel(); |
|
0 commit comments