# HG changeset patch # User cin # Date 1415143895 -10800 # Node ID 8ddf1648eca4624d0d2a4e6ea23e0a94793e2d35 # Parent 4c945d94b9ab0f2ecc9c7e30b99207d44c7cf3a6 fixed TransientPromiseException handling diff -r 4c945d94b9ab -r 8ddf1648eca4 Implab/IPromise.cs --- a/Implab/IPromise.cs Tue Nov 04 09:43:44 2014 +0300 +++ b/Implab/IPromise.cs Wed Nov 05 02:31:35 2014 +0300 @@ -18,7 +18,7 @@ Type PromiseType { get; } /// - /// Обещание является выполненым, либо успешно, либо с ошибкой. + /// Обещание является выполненым, либо успешно, либо с ошибкой, либо отменено. /// bool IsResolved { get; } diff -r 4c945d94b9ab -r 8ddf1648eca4 Implab/Promise.cs --- a/Implab/Promise.cs Tue Nov 04 09:43:44 2014 +0300 +++ b/Implab/Promise.cs Wed Nov 05 02:31:35 2014 +0300 @@ -73,9 +73,9 @@ 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 @@ /// Данное обещание уже выполнено public void Reject(Exception error) { if (BeginTransit()) { - m_error = error; + m_error = error is TransientPromiseException ? error.InnerException : error; CompleteTransit(REJECTED_STATE); OnStateChanged(); } else {