# 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 {