►
From YouTube: SES Meeting: compartments and shadow realm errors
Description
Jack Works brings questions about the proposed update for the compartment API and Mathieu brings questions about errors thrown from shadow realms.
A
All
right
welcome
to
the
assess
meeting
today
is
may
25th
of
2022,
and
the
topics
for
today's
meeting
are
updates
for
the
compartment
api.
We
have
jack
works
on
the
call
who
has
questions,
because
their
group
is
implementing
the
compartment
api
as
we
speak
for
their
purposes,
and
we
have
my
changes
to
the
compartment
api,
which
are
an
omnibus
of
all
of
the
things
that
we've
changed
in
the
last
two
years
since
we
updated
it
and
much
of
which
needs
consideration,
and
if
we
can
manage
to
get
karate
and
matthew
here.
A
B
Yeah
I
I
I
found
the
module.
Descriptor
is
a
pretty
new,
because
today
I
implement
where
implementing
those
I
was
referring
to
the
endos
implementation
and
the
module
the
module.
Descriptor
looks
pretty
new
to
me.
I
didn't
check
out
the
detail
yet.
A
Yes,
the
module
descriptors
are
an
idea
that
the
folks
at
moddable
have
implemented
in
excess
in
order
to
try
to
converge
on
what
we
have
in
the
session
and
answer
some
of
the
long-standing
questions
that
we
have
about
making
the
compartment
api
suitable
for
a
native
implementation
and
the
the
motivating
the
motivating
problem
that
module
descriptors
solve
is
that
the
module
map,
the
values
of
module
maps
in
session
and
the
previous
revision
of
the
proposal?
A
The
current
revision
of
the
proposal
module
maps,
the
value
of
a
module
map,
the
value
type
of
the
module
map
option
to
the
compartment
constructor
is
highly
overloaded
right.
It
can
be
a
module
namespace
object,
it
can
be
a
string.
A
It
needed
to
also
be
a
number
of
other
things
and,
and
the
question
became,
how
do
we
distinguish
a
module?
Namespace
object
in
a
reliable
way
from
all
of
the
other
things
that
we
needed
to
be
able
to
fit
into
that
position
like
static
module
records
or
static
module
records
with
with
metadata
and
the
metadata
for
a
stat,
so
static
module
records
can't
capture
the
per
compartment
metadata
of
us,
of
the
static
module
or
of
the
module.
The
module
source.
A
The
static
module
record
is
an
object
that
captures
no
information
that
was
not
included
in
the
source
that
it
was
compiled
from,
which
is
to
say
the
import.
Meta
object
is
not
among
the
details
that
are
captured
by
a
static
module
record.
Those
can
vary
from
compartment
to
compartment.
A
So
the
idea
is
that
we
solve
so
that
we
can.
We
can
solve
a
whole
bunch
of
problems
by
changing
the
value
type
of
module
map
and
the
return
type
of
magical
module
map
hook
and
the
return
value
type
of
the
load
hook,
which
we
previously
called
the
import
hook.
If
all
of
those
were
module
descriptors,
it
increases
the
uniformity
of
the
of
the
api.
A
I
think
makes
it
clearer
calling
in
a
module,
descriptor
hearkens
to
the
precedent
of
a
property
descriptor
and
the
shape
and
and
the
and
the
nice
thing
about
using
a
a
descriptor
object
is
that
its
shape
implies,
which
case
it's
going
to
be
used
for.
A
So
in
my
proposal,
which
I'm
updating
so
that
xs
and
endo
can
have
a
shared
truth
to
approach
now
that
we're
getting
closer
to
converging
introduces
the
no
introduces,
for
the
first
time,
the
notion
of
of
a
module
descriptor
and
instead
of
looking
at
the
diff.
Let's
look
at
no,
not
the
rich
diff.
That's
not
what
I
want.
I
want
to
look
at
the
file
the
new
file,
so
we're
proposing
the
addition
of
a
module
descriptor,
which
is
this
tagged
union.
A
B
Can
you
repeat
this
part
again?
What's
the
string
represents.
B
A
B
A
So
this
is,
this
is
a
a
a
cheap
way
to
say:
hey
this.
The
the
module
loaded
in
my
current
compartment
is
the
static
module
record,
which
is
to
say
the
how
to
instantiate,
not
the
instance
can
pass
from
the
parent
to
the
child,
as
opposed
to
other
cases
where
the
instance
is
passed,
which
is
straw,
man,
I'm
proposing
that
we
say
namespace
and
provide
the
module
exports
namespace,
so
that
this
is
the
distinction
we
for
inheriting
a
namespace
versus
a
record.
A
And
then
the
other,
the
other
case
is
passing
a
descriptor
that
says:
here's
the
static
module
record
or
the
third-party
static
module
record,
in
which
case
you
can
optionally,
say
that,
and
we
might
not
need
this,
so
I
won't
cover
it
right
now.
The
important
thing
is
that
this
would
allow
you
to
carry
properties
to
be
assigned
to
the
import
meta
of
the
instance
before
it
initializes.
A
This
is
how
the
this
is,
how
the
the
how
the
host
defines
the
behavior
of
the
compartment.
A
The
we
can,
we
will
have
the
import
meta
hook,
but
its
purpose
is
somewhat
more
more
specific.
The
the
reason
for
having
this
is
because,
when
implementing
the
node.js
semantics
of
a
compartment
in
endo,
one
of
the
things
that
we
noticed
was
that
the
load
hook
is
in
the
position.
A
It
is
inevitable
that
the
load
hook
will
be
implemented
in
such
a
way
that
it
discovers
all
of
the
data
necessary
to
populate
import
meta
and
putting
it
in
the
module.
Descriptor
provides
a
clear
way
for
the
load
hook
to
communicate
that
information
back
to
the
compartment
as
opposed
to
putting
it
into
a
side
table
and
then
having
the
import
hook,
share,
share
that
state
and
so
that,
when
it's
called
when
the
import
metahook
gets
called
later,
it
can
provide
the
information
that
was
discovered
during
the
load
hook.
A
This
is
really
just
a
simpler
way.
This
is
a
simpler
solution
than
requiring
an
import
meta
hook.
B
Can
give
in
real
world
example?
What's.
A
Featuring
yeah
yeah
concretely,
if
you
look
at
well,
let
me
see
if
I
can
pull
up
concrete
implementation,
but.
A
The
concrete
implementation
might
not
be
illustrative,
but
the
the
let
me
talk
through
it
first
and
see
if
that's
clear
enough,
a
load
hook
receives
a
full
specifier
and
is
required
to
return
a
module
record
and
then
potentially
additionally,
also
this
metadata.
So
to
make
the
case
for
why
it
needs
to
return
the
metadata.
The
first
thing
that
a
load
hook
needs
to
do
is
take
the
full
specifier
and
then
locate
the
corresponding
request
url.
A
So,
supposing
that
we're
using
urls
in
fetch
right
on
the
web,
you
take,
you
would
first
lift
the
module
specifier
in
its
logical
namespace
into
url
namespace.
Locating
it
right,
and
that
gives
you
a
request,
url
and
then
you
go
off
and
fetch
it
and
fetch
has
the
possibility
with
fetch.
There
is
the
possibility
that
you're,
yes,
you're,
going
to
get
the
source
text
provided
that
it
exists.
A
A
So
what
what
we
find
is
that
the
load
hook
in
the
process
of
locating
the
source
text
before
retrieving
it
or
as
a
side
effect
of
retrieving
it.
It
discovers
the
import
meta
url.
A
A
Okay,
let's
see
the.
A
Yeah,
so
this
so.
B
C
B
But
why
it's
why
the
import
meta
url
as
the
real
real
url
instead
of
the
url-
that's
meaningful
inside
that's
compartment.
For
example,
I
have
a
module
called
called
x
and
I
do
I
go
over
through
the
load
hook.
It's
become
some
http
url,
but
I,
but
it's
important
meta
url,
should
still
be
the
original
specifier
x
instead
of
the
real,
the
real
url.
A
The
reason
for
that
the
reason
why
the
web
and
node
both
settled
on
using
the
response
url
is
one
they
conflate
the
notion
of
module,
specifier
and
url
they're
one
in
the
same
on
the
web
and
node
the
compartment
api
allows
us
it
doesn't
require
us
to,
but
it
allows
us
to
use
special,
separate
key
spaces
for
urls
and
and
module
specifiers,
but
for
both
so
for
your
specifier.
A
It's
important
that
the
referrer
specifier
of
the
module
be
be
the
to
to
be
after
having
followed,
redirects
or
symbolic
links
in
order
for
relative
module
specifiers
to
find
to
find
the
the
neighbors
to
that
module
in
its
in
its
actual
location
and
a
similar
there's
a
similar
argument
to
be
used
for
import
meta
url
in
in
practice.
A
Import
meta,
url
is
being
used
for
retrieving
adjacent
assets
in
the
on
the
web
to
and
they
are
adjacent,
not
in
the
logical
name,
space
of
the
compartment
they're
a
lot
and
they
are
adjacent
in
the
physical
namespace
of
the
web.
So
if
I
were
to
have
like
one
common,
alias
that
happens
in
an
in
an
endo
style
compartment,
that's
emulating
a
node
style
package
is
that
the
name
dot
refers
to
dot,
slash
source,
slash
main.js,
for
example,
right
and
if
I
were
to
use
dot
as
the
import
meta
url.
A
That
would
be
fully
qualified
to
the
package
location
group.
But
if
I
were
to
have
an
a
fave
icon,
a
favicon.ico
file
in
source
favicon.ico,
I
would
use
a
very
different
url
for
the
import
meta
url.
Depending
on
whether
we're
using
the
requestor
response.
Url,
I
see
a
hand
from
matthew.
B
B
C
You
don't
have
to
like.
I
think
this
from
what
I
understand
from
chris.
This
api
gives
you
an
opportunity
to
give
at
the
original
url,
but
if
you
want
to
virtualize
it
and
put
whatever
else
you
want
in
there,
that
would
work
with
your
with
that
compartment
compartments
virtualization.
You
still
can
when
the
import
hook
is
called
right.
Yes,.
A
The
the
load
hooker
import
hook
has
the
ability
to
deny
by
default.
The
import
hook
provides
no
meta
there's
by
default
by
default.
The
compartment
api
does
not
provide
any
properties
on
import
meta
then
it
is.
It
is
up
to
the
host
to
provide
or
deny
so
our
position
on
the
compartment
api
is
enabled
to
that.
A
We
must
enable
people
to
implement
the
web
and
node
as
they
are
and
provide,
and
also
enable
access
to
to
provide
modules
as
they've
implemented
them
with
a
generalization
that
works
for
all
of
those
cases
and
then
more.
A
A
Let
me
let
me
find
where
I
put
my
window
yeah
going
back
to
here:
yeah,
okay,
so
yeah
continuing
from
where
I
left
off
there.
We
add
the
this.
This
revision
of
the
proposal
adds
the
notion
of
a
third
party
static,
module
record
as
well
that
wasn't
there
before
and
third-party
static
module
records,
allow
us
to
link
jason,
wasm,
etc.
A
A
The
third-party
static
module
record
that
access
has
implemented,
which
differs
from
the
one
that
we
implemented
in
the
shim,
provides
a
static
bindings
array
which
is
essentially
equivalent
to
the
result
of
a
static
analysis
of
an
esm
and
an
initialize
function
which
receives
the
module
environment
record,
and
I
have
a
feeling
that.
A
Yeah,
the
module
environment
record
is
the
internal
representation
of
the
namespace
of
the
module
that
only
the
module
has
access
to.
It
is
a
thing
that
exists
in
implementations:
it's
just
not
what
reified
as
as
a
javascript
object.
A
That
is
to
say
that,
if
something
is,
if
imports
x
as
y,
the
property
y
will
will
be
the
beyond
the
module
environment
record,
whereas
the
property
x
will
exist
on
the
module,
namespace
object
of
the
thing
that
was
imported.
B
Can
you
write
a
third-party
static
module
called
in
javascript
defined
in
javascript?
If
that.
B
Can
you
can
you,
can
you
write
a
demo
one
now
yeah?
I
think
it
will
be
better
to
understand.
D
In
the
meantime,
can
you
please
the
this
this
this
link
into
the
shot.
A
All
right,
yeah,
you
want
to
see
an
example
of
a
third-party
module
record
again.
I
think
I
will
resort
to
a
terminal
window
in
order
to
provide
a
minimum
educational
and
example
instead
of
a
practical
working
example,
that
has
a
lot
more
details.
A
So,
if
I
were
to
oh,
you
know
what
actually
I
do
have
an
educational
example
laying
around,
because
the
ces
tests
provide
this
endo
packages.
A
A
This
is
just
using
your
regular
expression
to
look
for
exports.name
and
require
calls
and
is
sufficient
for
tests
anything
that
we
would
use
in
productions
using
an
actual
parser,
actually
we're
using
elixir
the
same
lecture
that
node
uses
for
this
purpose,
but
so
a
cgs
static,
module
record
in
implements
a
implements,
a
third-party
static
module
record,
and
the
one
of
the
caveats
of
this
is
that
this
is
using
the
api
that
we
implemented
in.
A
This
is
the
api
that
we
implemented
in
the
shim
and
doesn't
reflect
what
I'm
proposing
for
the
standard,
but
it
should
give
you
the
right
idea.
The
idea
is
that
module
exports
corresponds
loosely
to
a
module
environment
record
and
we
do
some
common
jsc
things
and
create
a
require
call
that
uses
import
now
behind
the
scenes
in
this
case,
in
order
to
return
the
namespaces
of
things
that
are
imported
and
then
we
create
a
functor.
A
This
is
a
common
js
functor
that
just
wraps
the
source
of
the
common
js
module
in
a
fun
function
that
receives,
require
exports,
module
file
named
name,
and
then
we
return
the
old
idea
of
a
static
module
record,
which
was
just
the
declarations
of
imports
exports
in
an
execute.
This
is
changed
into
bindings
and
initialize.
A
The
difference
is
that
the
bindings
array
consists
of
all
of
these
import
star
as
import
export,
star
import
export
as
in
from
and
the
the
effect
is
the
same,
except
that
the
bindings
array
preserves
the
order
in
a
way
that
the
old
form
did
not,
and
the
initialize
no
longer
requires
us
to
pass
a
compartment
in
an
import.
Now
in
because
the
module
environment
record
has
all
of
the
proper
names
already
bound
to
the
module
environment
record.
A
B
In
in
the
in
the
previous
code
shield,
the
the
the
common
gs
modulo
code
can
have,
I
can
get
the
compartment
instance,
but
in
the
proposals
api
there
is
no
compartment
show
up.
That's
right,
then
how
you
will
going
to
evaluate
in
dense
compartments.
A
Yeah
we
provide
a.
We
have
not
done
this,
yet
I
am
confident
that
it
can
be
done.
It's
a
matter
of
providing
that
the
stat
that
the
initialize
function
would
be
would
need
to
provide.
A
It
it
needs
to
this
regardless,
you
need
to
be
able
to
pass,
require
and
require,
and
exports
and
module
into
the
underlying
source
that
so
the
source
is
just
evaled
and
we're
injecting
those
things
the
require
function
will
need
to
be
more
elaborate.
The
require
function
needs
to
be
able
to
from
the
analysis
phase.
We
will
have
to
keep
track
of
what
the
name
is
for
every
namespace
object
of
something
that
every
namespace
object
that
was
imported
from
another
module
in
the
bindings
array.
C
A
The
require
function,
that's
passed
into
the
source
is
going
to
close
over
that
module
environment
record
and
have
to
track,
and
we
and
in
the
analysis,
phase
we'll
need
to
produce
a
map
that
says
this
specifier.
This
import,
specifier
from
the
require
call,
corresponds
to
this
property
of
the
environment.
Module
record
does
that
make
sense
not
entirely,
but
it's
basically
for
common
js.
A
C
Yeah
and
and
so
all
the
exports
even
assignment
and
stuff,
like
that
you're
assuming
the
source,
is
already
pre-processed
to
have
removed
all
of
those
things.
No.
C
By
assigning
to
the
module
exports
and
then
it
would
automatically
be
actually
it
won't
yeah
you're
right
but
yeah.
So
oh
yeah
you're
right,
so
you
don't
assign
they're,
not
live
bindings.
Obviously
yeah,
okay,
but
assigning
to
module.exports
yeah.
A
I
do
not
feel
like
we've
gotten
to
the
bottom
of
this
topic,
but
I
do
want
to
make
some
space
for
matthew
and
karidy
to
catch
up.
Is
this
a
good
time
to
segue.
C
Quick
observation
on
the
module
descriptor,
I'm
in
general,
I'm
not
a
fan
of
doing
a
variation
between
a
string
and
an
object,
but
it
yeah
I'm
wondering
if,
if
it's
a
string
it
can
it
should
it
be
just
model
as
another
object
in
that
union.
C
I
think
so
yeah
I
agree
have
to,
or
at
least
have
have
an
equivalent
one
that
exists
and
still
allow
the
string
as
a
as
a
shorthand.
But
right,
I'm
very.
A
Let's,
let's
capture
that
in
the
diff
as
a
comment.
D
On
the
computer
I
was
on
the
phone
could
not
really
on
the
cube
for
question,
but
on
the
compartment
that
I
feel
like
I,
I
I
need
to
put
some
time
on
understanding
all
these
better,
but
it
feels
to
me
that
we're
still
very
complicated
still
covering
a
lot
of
ground.
D
It
feels
to
me
very
similar
to
what
happened
with
the
loader
api,
where
we
spent
years
trying
to
go
for
a
very
compelling
solution
that
can
do
a
lot
of
things
and
then
we
fail
to
deliver
that.
So
we
need
to
be
conscious
about
it
and
hopefully
trying
to
simplify
it
as
much
as
possible,
because
it
seems
like
a
massive
massive
feature
and
we
don't
have
a
very
good
track
record
for
big
big
features.
A
Yeah
yeah,
I'm
aware
yeah
yeah,
especially
aware
since
yeah,
excluding
a
module
loader
api
from
esm,
was
the
simplification
that
made
it
possible
to
reach
consensus
yeah
exactly
exactly
so.
D
I'm
I'm
fine
with
having
like
a
few
offline
sync
up
with
you
or
some
some
other
people
trying
to
see.
I
can
help
a
little
bit
there,
but.
A
Yeah
but
the
problem,
the
the
trouble
for
the
module
loader
api
is
that
there
is
inherent
complexity
that
we
can't
paper
over
and
there
isn't
actually
all
that
much
incidental
complexity,
yeah.
No,
I
I
feel
that.
D
That's
true,
but
I
I
I
feel
that
when
you
look
at
the
different
use
cases,
some
of
them,
you
might
be
able
to
solve
it
with
solutions
that
you
have
for
other
use
cases.
So
moving
more
things
to
the
user
line
might
be
a
good
strategy
and
it
might
not
give
you
the
full
advantage
that
you
have
with
this
api.
But
it
will
give
us
a
path
forward
with
the
communities
to
try
to
get
something
in
and
then
we
can
move
from
there.
But.
A
My
intuition
on
that
actually
is
the
same,
but
I
think
that
I've,
but
from
working
on
this,
I
think
that
I've
walked
past
my
intuition
to
a
new
to
this
state.
The
like
the
original
proposal
that
I
had
made
for
like
before
esm.
A
My
proposal
was
that
all
we
needed
for
a
module,
loader
api,
for
whatever
module
system
we
adopt
into
the
language,
would
be
to
introduce
a
module.
Constructor
function,
that's
analogous
to
a
function
constructor
that
would
be
analogous
to
the
static
module
record,
but
be
directly
executable
by
user
code
without
an
associated
compartment.
A
A
All
all
of
that
is
necessary,
and
in
order
for
us
to
get
this
to
make
this
useful
for
purposes
of
cess,
I
I
agree
that
there
is
a
simpler
module
loader
api
that
just
gives
us
something
like
the
static
module
record
and
it
directly
implements
hooks.
A
But
yeah
it's
worth
considering
and
I'd
love
to
have
more
conversations
with
you
about
it
correctly.
Let's
just,
but
I
think
that
in
that
process
we
will
walk
ourselves
back
to
basically
this
api.
A
A
Yeah,
the
having
a
compartment
in
the
language
will
make
follow-up
will
make
compar
having
realms
and
compartments
in
the
language
will
make
those
obvious
point
points
to
hook
on
other
host
virtualization
hooks
as
they're
as
they
come
up
and
are
needed
for
the
moment
for
the
purpose
of
creating
a
hardened
javascript
environment.
A
A
A
B
B
I
have
another
question:
does
the
scs
currency
implementation
requires
a
vowel.
A
Yeah,
yes,
well,
okay,
so
it.
D
B
A
A
I
should
say
a
pre
pre-pre-evaluated,
not
just
pre-compiled
static
module
records,
so
they
can
be
embedded
in
an
asset
as
opposed
to
embedded
as
strings.
C
Over
to
matthew
all
right,
let
me
share
my
screen
I'll
try
to
do
a
condensed
version
here,
so
the
shadow
realm
api
has
proposed
basically
prevents
anything
thrown
from
one
side
of
the
callable
binary
to
well.
Actually
I
don't
know
what
we
we
talked
about
is
a
couple
months
ago,
and
I
think
what
we
ended
up
at
was.
C
It
is
fine
for
primitives
thrown
acro
across
a
callable
binary
to
be
to
end
up
as
an
exception
thrown
on
the
other
side,
with
that
primitive
value,
or
maybe
a
wrapped
function,
but
for
objects
to
keep.
C
An
object
thrown
including
a
real
error
thrown
across
the
collarbone
boundary
would
just
end
up
as
a
generic
type
error,
because
it
cannot
go
across
the
boundary
there.
Then
questions
came
up
about
well
how
what
is
the
about
the
developer
experience
for
for
those
things?
So
now,
if
you
have
a
generic
type
error,
that's
created
there.
You
lose
the
stack
information
that
you
potentially
had,
or
even
the
error
name
that
you
had
of
the
original
error
and
then
so.
C
The
developer
is
not
able
to
understand
automatically
what
happens,
and
this
is
shadow
realm
being
a
low
level
api.
C
It
is
conceivable
that
we
put
the
burden
on
the
user
code
using
the
shadow
realm
api
to
catch
exceptions
before
the
callable
boundary
and
pass
them
over
through
a
membrane
line
system
or
a
reporting
system
to
to
report
exceptions
thrown
during
the
execution
so
use
the
callable
binary.
The
user
code
should
be
aware
of
the
callball
boundary
and
and
in
the
same
way
it
can't
let
object
go
through.
It
would
have
to
catch
exceptions
and
have
a
reporting
system.
For
those.
C
However,
the
feedback
that
we
subsequently
got
is
errors
thrown
by
user
code,
are
not
all
errors
that
might
end
up
there.
So
if
you
have
a
wrapped
functions,
that
will
be
the
case.
However,
there
are
the.
C
There
is
the
case
of
import
value
so
general
instance
dot
import
value
or
dot
evaluate
for
script
code,
the
process
of
resolving
a
module
the
host
might
end
up,
throwing
an
error,
especially
with
node
and
import
and
module
loader
hooks,
or
I
don't
remember
exactly
how
that
works
in
node,
which
actually
may
be
javascript
implemented
and
those
errors.
C
So
the
question
is:
if
you
made
a
mistake,
for
example,
in
or
there's
a
problem
with
your
with
your
module
graph
and
now
you're
doing
port
value,
the
hosts
should
be
able
to
provide
information
to
the
developers
that
something
went
haywire
with
variant
ports
and
at
that
point
no
code
user
code
from
inside
the
shadow
valve
would
have
executed.
So
there
is
no
way
for
the
shadow
realm
user
to
actually
do
its
own
reporting
of
that.
C
Errors
and
yeah,
so
it's
tonight
what
my
my
suggestion
was
like:
let's
try
to
find
a
way,
so
that's
host
errors
or
anything
basic,
any
errors
thrown
before
user
code
as
as
started
execution.
So
if
it's
an
evaluation
before
we
actually
evaluate
the
source
code
or
before
we
start
evaluating
the
source
of
of
a
an
imported
module,
any
errors
thrown
before
that
somehow
to
be
able
to
throw
them
with
full
information
in
the
incubator
realm
in
the
incubated
incubator
realm
well,.
D
I'm
a
little
confused
so
for
me,
the
deep
friend
there
there
is
a
fine
line
between
and
poor
volume
the
fact
that
evaluates
its
synchronous.
There
are
two
type
of
errors
that
only
can
happen
there.
As
far
as
I
know,
one
is
a
syntax
error.
C
Yeah,
I
think
it
evaluates
there
is
I
I
don't
see
how
I
think
evaluate
is
less
of
a
concern.
I
I
think
we
should
be
able
to
say,
like
syntax
errors
are
just
thrown
with
full
information
because
which.
C
I
think
the
big
sticking
point
is
import
value.
D
So
by
the
time
you
get
an
error,
an
exception
might
be
too
late
for
us
to
online
all
that
complexity,
but
we
might,
we
might
be
able
to
pull
this
off
by
making
some
or
adding
some
doing
some
gymnastics
on
the
expect
to
be
able
to
carry
on
some
of
the
context
of
where
the
initialization
is
is
happening
right
now,
I'm
not
sure,
but
it
might
be,
might
be
possible.
D
So
I
I
think
I
agree
in
principle
that
we
we
could
get
this
done
for
the
purpose
of
reporting
those
errors
from
the
incubator
realm,
on
the
assumption
that
it
is
a
problem
in
the
in
the
operation
that
the
incubator
realm
is
trying
to
carry
on,
which
is
importing
a
value.
But
it's
importing
a
value
that
cannot
be
resolved
by
by
the
the
rom.
So
the
error.
D
Is
on
the
include
around
saying
you're?
Not
you
cannot
do
that,
so
I
I
feel
that
that's
possible,
but
it'll
be
tricky.
C
Yeah,
I
so
I
think,
shu
put
something
on
the
agenda
for
the
next
plenary,
which
is
basically
trying
to
answer
from
some
questions
in
general,
like
whether
in
general,
stacks
they're
not
specs.
Currently,
but
if
it's
something
that
should
be
available
through
the
callable
battery
some
information
that
should
be
available,
whether.
C
Is
information
that
should
be
available
through
the
coldwell
bindery?
I
I
think
in
in
general,
my
opinion
is
still
shadow.
Realm
is
a
low-level
api
and
the
callable
vendor
itself
in,
as
in
the
wrapper,
the
wrap
functions
should
keep
denying
thrown
objects
whatever
they
are,
even
if
they
are
error,
objects
and,
and
so
and
and
that
would
result
in
an
opaque
typer.
C
You
would
lose
that
information,
and
I
I
agree-
it's
not
great
for
the
developer
experience,
but
that
is
something
still
under
the
shadow
realms
users
control
they
could
catch
and
log
or
report.
However,
however,
they
want.
C
And-
and
I
think
everybody
on
this
call
at
least
last
time
was
okay
with
that
approach,
but
it's
very
likely
that
the
rest
of
the
community
might
not
see
it.
That
way.
C
I
surely
don't
know
enough
about
the
spec
plumbing
and
the
implementations
currently
to
know
how
we
would
be
able
to
make
import
value
behave
in
a
developer,
friendly
way
for
errors.
I
I
really
hope
we
can
find
a
solution.
There.
C
C
Yep
all
right:
well,
I
guess
hopefully
something
will
come
up.
Hopefully
we'll
come
up
with
an
answer
or
a
direction
at
at
plenary
next
month.
D
I,
like
I
like
shoes,
way
of
thinking
about
this.
C
C
The
thing
is
that
you
can
throw
anything
like
why.
Why
are
we
starting
to
pierce
special
case
some
things
in
through
the
cold
binary
errors
are
just
a
special
case
value.
It
would
be
a
special
case
value
in
that
case.
C
I
believe
safari
implemented
the
completely
opaque
typer,
and
that
is
why
this
came
up
is
they
were
trying
to
debug
some
of
their
tests
for
shadow
realm
and
they
were
like.
We
have
no
information.
How
do
we
debug
this.
A
C
But
you
can
already
throw
primitives
exactly.
A
C
Primitive,
I
still
think
there
it
might
be
interesting
to
throw
a
callable
and
and
wrap
it
on.
D
Right
we
discussed
this
on
the
we
have
a
meeting
before
this
meeting
with
the
shadow
rom
implementers
and
a
bunch
of
other
people,
the
part
of
the
tools
meeting-
and
this
was
one
of
the
ask
where
we
are
on
this
one.
So
this
is
one
of
the
present
issues.
Oh.
C
I
I
didn't
realize
they
were
discussed
in
another
meeting
recently.
A
So
we're
at
time
the
let's
yeah.
If
we
need
to
talk
about
this
again
next
week,
please
put
it
on
the
agenda.
It
would
be
it'd,
be
welcome.
C
I
am
very
hopeful
to
talk
about
return
override
sometime
soon.
A
Oh,
that
was
that's
a
fun
one
as
well
yeah.
Likewise,
okay,
I'm
gonna
call
the
meeting.
Thank
you
again.
Everybody
for
coming.