```typescript class A { @immut user = {}; @shallow user = {}; @deep user = {}; @deep get user() { } @shallow get user() { } @immut get user() { } // or @re instead of @immut @re user = {}; @re get user() { } } ``` More exported functions: - reaction Proposal: - promiseTruthy - promiseFalsy - promiseNext Better without reactions: ```typescript await new Promise((resolve) => reaction(expr, (ret) => ret && resolve())); // not sure ```