diff --git a/README.md b/README.md
index 3b12d4c..cc10abb 100644
--- a/README.md
+++ b/README.md
@@ -483,6 +483,7 @@ This proposal is in its early stages, and we welcome your input to help refine i
## Authors
- [Arthur Fiorette](https://github.com/arthurfiorette) ([X](https://x.com/arthurfiorette))
+- [Arlen Beiler](https://github.com/Arlen22)
diff --git a/spec.emu b/spec.emu
index 343c60e..ce7bf8c 100644
--- a/spec.emu
+++ b/spec.emu
@@ -4,98 +4,134 @@
-title: ECMAScript Safe Assignment Operator +title: ECMAScript Try Operator stage: -1 -contributors: Arthur Fiorette +contributors: Arthur Fiorette, Arlen Beiler
This proposal introduces syntax and semantics for safe assignments
-| - Specification Name - | -- [[Description]] - | -- Value and Purpose - | -
|---|---|---|
| - @@result - | -- `"Symbol.result"` - | -- A method that wraps function call result into a tuple array. Called by the semantics of `?=` operator and `ResultableStack` objects. - | -
| - Intrinsic Name - | -- Global Name - | -- ECMAScript Language Association - | -
|---|---|---|
| - %Function% - | -- `Function` - | -
- The Function constructor ( |
-
| - %Promise% - | -- `Promise` - | -
- The Promise object ( |
-
GetValue must be called even though its value is not used because it may have observable side-effects.
+| + Intrinsic Name + | ++ Global Name + | ++ ECMAScript Language Association + | +
|---|---|---|
| + %TryResult% + | ++ `TryResult` + | +
+ The `TryResult` constructor ( |
+
The TryResult constructor:
+
+ class TryResult {
+ constructor(ok, error, value) {
+ this.ok = ok
+ this.error = error
+ this.value = value
+ }
+ *[Symbol.iterator]() {
+ yield this.ok
+ yield this.error
+ yield this.value
+ }
+ static ok(value) {
+ return new TryResult(true, undefined, value)
+ }
+ static error(error) {
+ return new TryResult(false, error, undefined)
+ }
+ }
+
+