getter = () => value;

                const setter = (newValue) => {
                    if (typeof newValue === 'function') {
                        newValue = newValue(value);
                    }

                    if (newValue !== value) {
                        const oldValue = value;
                        value = newValue;

                        subscribers.forEach(callback => {
                            try {
                                callback(newValue, oldValue);
                  