# HG changeset patch
# User cin
# Date 2014-11-04 23:31:35
# Node ID 8ddf1648eca4624d0d2a4e6ea23e0a94793e2d35
# Parent 4c945d94b9ab0f2ecc9c7e30b99207d44c7cf3a6
fixed TransientPromiseException handling
diff --git a/Implab/IPromise.cs b/Implab/IPromise.cs
--- a/Implab/IPromise.cs
+++ b/Implab/IPromise.cs
@@ -18,7 +18,7 @@ namespace Implab {
Type PromiseType { get; }
///
- /// Обещание является выполненым, либо успешно, либо с ошибкой.
+ /// Обещание является выполненым, либо успешно, либо с ошибкой, либо отменено.
///
bool IsResolved { get; }
diff --git a/Implab/Promise.cs b/Implab/Promise.cs
--- a/Implab/Promise.cs
+++ b/Implab/Promise.cs
@@ -73,9 +73,9 @@ namespace Implab {
var res = errorHandler(err);
if (medium != null)
medium.Resolve(res);
- } catch (TransientPromiseException err2) {
+ /*} catch (TransientPromiseException err2) {
if (medium != null)
- medium.Reject(err2.InnerException);
+ medium.Reject(err2.InnerException);*/
} catch (Exception err2) {
if (medium != null)
medium.Reject(err2);
@@ -203,7 +203,7 @@ namespace Implab {
/// Данное обещание уже выполнено
public void Reject(Exception error) {
if (BeginTransit()) {
- m_error = error;
+ m_error = error is TransientPromiseException ? error.InnerException : error;
CompleteTransit(REJECTED_STATE);
OnStateChanged();
} else {