Added state.
Rewrite of promise.
Refactor again. Each then() starts the nextTicke of the current promise. Each method call on the object will return a promise.
value() forces a result.