Currently existing value checks from GetInternalField and GetAlignedPointerFromInternalField can be a bit awkward. The former returns a Local<Value>, while the latter returns a void* and asserts if the value is not an aligned pointer.
I would like to explore adding a pair of alternatives that would return a MaybeLocal<Value> and Maybe<T>, respectively... for instance:
```
MaybeLocal<Value> ret = obj->GetInternalFieldMaybe(0);
if (!ret.IsEmpty()) {
Local<Value> val = ret.ToLocalChecked();
// do something with val
}
```
and
```
Foo* foo = nullptr;
Maybe<Foo> ret = obj->GetAlignedPointerFromInternalFieldMaybe(0);
if (ret.To(foo))
// do something with foo
```
A key difference in behavior with the GetAlignedPointerFromInternalFieldMaybe variant is that instead of asserting when not an aligned pointer, it would return a Maybe with IsNothing == true. One use case for this we have in Node.js is that we currently use an internal field in the Promise object to store a reference to a tracking object (part of our async context tracking mechanism). That is stored using SetInternalField, but we have a check just prior to make sure there's not an aligned pointer set in that field already, which will assert if SetInternalField has already been called.
Before going off and implementing, I wanted to (a) double check to make sure this even made sense and (b) ask for alternative naming suggestions because `GetInternalFieldMaybe()` really isn't that great unless I was Carly Rae Jepsen.
- James