Mercurial > pub > ImplabNet
changeset 99:8ddf1648eca4 v2
fixed TransientPromiseException handling
author | cin |
---|---|
date | Wed, 05 Nov 2014 02:31:35 +0300 |
parents | 4c945d94b9ab |
children | 673947ce458a |
files | Implab/IPromise.cs Implab/Promise.cs |
diffstat | 2 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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; } /// <summary> - /// Обещание является выполненым, либо успешно, либо с ошибкой. + /// Обещание является выполненым, либо успешно, либо с ошибкой, либо отменено. /// </summary> bool IsResolved { get; }
--- 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 @@ /// <exception cref="InvalidOperationException">Данное обещание уже выполнено</exception> public void Reject(Exception error) { if (BeginTransit()) { - m_error = error; + m_error = error is TransientPromiseException ? error.InnerException : error; CompleteTransit(REJECTED_STATE); OnStateChanged(); } else {