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