annotate Implab/Promise.cs @ 196:40d7fed4a09e

fixed promise chaining behavior, the error handler doesn't handle result or cancellation handlers exceptions these exceptions are propagated to the next handlers.
author cin
date Mon, 29 Aug 2016 23:15:51 +0300
parents 8c0b95069066
children 8200ab154c8a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
1 using System;
144
8c0b95069066 DRAFT: refactoring
cin
parents: 138
diff changeset
2 using Implab.Parallels;
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
3
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
4 namespace Implab {
144
8c0b95069066 DRAFT: refactoring
cin
parents: 138
diff changeset
5 public class Promise : AbstractPromise, IDeferred {
8c0b95069066 DRAFT: refactoring
cin
parents: 138
diff changeset
6 public static readonly Promise SUCCESS;
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
7
144
8c0b95069066 DRAFT: refactoring
cin
parents: 138
diff changeset
8 static Promise() {
8c0b95069066 DRAFT: refactoring
cin
parents: 138
diff changeset
9 SUCCESS = new Promise();
8c0b95069066 DRAFT: refactoring
cin
parents: 138
diff changeset
10 SUCCESS.Resolve();
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
11 }
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
12
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
13 public void Resolve() {
144
8c0b95069066 DRAFT: refactoring
cin
parents: 138
diff changeset
14 SetResult();
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
15 }
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
16
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
17 public void Reject(Exception error) {
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
18 SetError(error);
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
19 }
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
20 }
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
21 }
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 112
diff changeset
22