►
From YouTube: 2021-06-25-Node.js Node-API Team meeting
Description
No description was provided for this meeting.
If this is YOUR meeting, an easy way to fix this is to add a description to your video, wherever mtngs.io found it (probably YouTube).
A
So
welcome
to
the
node.js
node
api
team
meeting
for
june
25th
2021.
We
will
follow
our
standard
approach
of
looking
through
the
issues
that
we've
tagged
for
milestone.
11.,
it's
been
a
very
long
milestone,
but
anyway
the
before
we
get
started.
Does
anybody
announcements
or
news
that
they'd
like
to
share.
A
B
A
B
B
We
are
going
to
like
say
allowing
symbols
to
be
referenced
in
the
case,
so
I'm
proposing
that
so
that
we
can
reference
the
symbol
values.
So
we
can
keep
all
these
javascript
values
in
check
with
the
nappy
error
project.
In
current
situation,
without
introducing
any
breaking
change,.
C
Actually
correct
me
if
I'm
wrong,
but
but
an
error
in
in
in
like
the
napi
namespace,
an
error
is
a
reference
right,
a
persistent
reference.
So
if
we
used
weak
maps
well,
we
we
could
actually.
C
C
We
store
the
the
the
error
as
a
as
a
we
store,
the
error
as
a
property,
just
a
plain
old
property
of
the
object
right
and
then
and
then,
since
we
have
a
persistent
reference
to
the
object,
then
the
the
error,
which
is
a
primitive
value,
will
will
reside
on
the
object
persistently
and
will
not
be
garbage
collected,
and
so
so,
if
the,
if
the
user
wants
to
retrieve
the
error
later,
then
we
can
give
it
to
them
just
by
accessing
a
property
just
by
accessing
this
magic
property.
On
the
object.
B
Says
that
explanation
might
not
be
very
clear
and
what
I
mean
is
not
using
weak
maps
in
the
case,
but
it's
we
are
used
still
referencing
the
value
referencing,
the
javascript
value
by
the
reference,
but
for
the
primitive
values
we
are
attaching
the
negative
value
like
say
double
or
integers
to
store
them
by
value,
but
regard
them
by
reference
so
that
we
don't
have
to
create
any
reference
for
it.
B
So
the
key
point
for
the
using
a
object
for
those
symbol
or
other
primitive
value
in
the
nfp
error
objective
is
that
we
don't
we
we
must
not
create
any
calls
into
javascript.
B
B
C
Oh,
I
see
I
see
yeah
honestly
when,
when
we
when
we
create
when
we
defined
the
the
reference
api,
we
did
it.
We
did
it
with
this
restriction
for
for
for
objects
for
javascript
objects.
Only
if
I
remember
correctly,
because
chakra
core
didn't
have
support
for
creating
references
for
primitive
types,
but
every
other
engine
that
I've
encountered,
you
can
create
the
persistent
reference
to
pretty
much
any
javascript
value,
primitive
or
otherwise,
so
yeah
so
yeah,
and
now
the
chakra.
A
C
I
believe
so
yeah
yeah
yeah,
I
mean
okay,
look
I
I
haven't
tested
every
last
javascript
engine.
Obviously
so
I
cannot
speak
for
all
of
them,
but
but
I
mean
obviously
I
I've
done
extensive
work
with
v8
and
jerryscript
and
both
of
them
have
absolutely
no
issues
making
persistent
references
to
primitive
values.
C
B
Well,
I
mean
what
I
mean
is
that
increasingly
now
we
have
to,
since
there
is
a
proposal
that
we
allowing
symbols
and
bookmap
map
keys.
So
in
that
case,
in
any
way
the
symbols
have
to
be
able
to
be
like
say,
referenced
in
the
case.
So
if
that's,
if
that
is
the
case,
the
engines
have
to
support
the
symbols
to
the
weapons.
C
C
Chakra
core
obviously
supports
references
to
to
primitive
symbols,
because
if
I
store
a
primitive
symbol
in
a
variable
right
or
if
I
store
a
primitive
or
if
I
store
like
the
the
the
string-
let's
say:
if
I
store
it
on
an
object
right,
then
then
chakra
core
is
going
to
keep
a
reference
to
that
string
as
long
as
it's
it's
set
as
the
property
of
an
object
right.
That
is
one
kind
of
reference
that
is
a
reference
inside
the
engine.
C
C
It's
an
it's
an
explicit
reference
made
by
native
code
right
and
that
that
I
think,
is
a
different
kind
of
reference
and
and
for
some
strange
reason,
chakra
core
did
not
have
support
for
making
references
from
native
code
to
javascript
primitives,
but
obviously
it
had
to
have
support
for
for
for
making
references
to
any
javascript
value,
because
javascript
internally
uses
references
to
things
right
so
that
it
doesn't
garbage
collect
stuff
as
long
as
it
has
references
so
so
chakra
core
obviously
supported
that
right,
and
so
I
I
believe
that
the
the
the
references
that
are
being
talked
about
in
this
tc39
stage.
C
C
C
Okay,
I
I
I
didn't
you
you
cut
out
between,
makes
and
sense
you.
There
was
a
word
in
between
that
I
caught
and
it's
a
very
important
word.
Can
you
please
repeat
that.
B
C
B
C
I'm
saying
is
what
I'm,
what
I'm
saying
is
the
tc39
proposal?
Is
it
well?
No,
let
me
let
me
let
me
start
again.
So
what
we
have
right
now
in
node
api
is
actually
an
artificial
restriction
on
what
the
engine
exposed,
because,
if
you
think
about
it,
creating
a
reference
is
something
the
engine
does
all
the
time
right.
It
creates
a
reference
to
the
number
five.
It
creates
a
reference
to
the
string,
hello
world.
It
does
that
all
the
time.
C
Every
time
you
you
assign
something
to
a
variable,
the
the
javascript
engine
creates
a
reference
right
and
every
engine
that
we've
encountered
so
far
that
I've
encountered
so
far,
except
for
chakra
core
was
able
to
to
to
to
unify
the
api
that
it
uses
when
somebody
writes
a
equals
five
with
the
api
that
the
native
programmer
uses
when
they
write.
C
You
know
you
know
what
is
that
you
know
new
reference
right
so
so
so
only
chakra
core
was
so
chakra
core
was
the
only
engine
that
made
a
distinction
between
the
the
native
javascript
way
of
creating
references
of
telling
the
engine
to
create
the
reference
and
the
native
and
the
native
c,
plus
or
c
or
or
you
know,
machine
code
way
of
telling
the
engine
to
make
a
reference
right.
C
So
so
so
chakra
core
was
quote-unquote
broken
in
that
sense,
because
it
didn't
allow
you
to
do
the
same
things
from
the
native
side
that
you
could
do
from
the
javascript
side.
Every
other
engine
allows
you
to
do
the
same
things
from
the
native
side
that
you
can
from
the
from
the
javascript
side.
That
is
create
references
to
anything.
C
C
It's
orthogonal
to
our
case
is
what
I'm
saying,
because
the
javascript
engine
internally
already
has
support
for
creating
references
to
primitive
values,
because
it
does
it
has
to
in
order
for
those
values
not
to
be
you
know,
in
order
for
you,
you
know
you
set
a
equals
five
and
all
of
a
sudden
a
is
undefined,
because
five
was
garbage
collected
right.
No
that
doesn't
happen
in
a
javascript
engine
right.
C
So
so
you
know
we
already
have
the
ability
to
create
references
to
anything.
It's
just
that
we've
we
haven't
chosen
to
expose
that
ability
to
our
users,
because
we
were
worried
that
chakra
corp
might
not
be
able
to
keep
up
and
in
fact
it
wasn't
able
to
keep
up.
We.
A
C
Yeah
yeah
yeah,
yeah
yeah.
I
I
think
it's
it's
it's
our
friends
at
microsoft,
who
have
like
this
babylon
native
going
on
and
all
that
they
might
be
the
people
to
to
contact
on
this
because
they
they
would.
They
probably
have
more
experience
with
more
engines
than
than
any
of
us
here.
C
C
Mean
we,
we
could
look
at
the
at
the
documentation
at
the
at
the
native
apis
for
for
those
various
engines
and
and
they
would
have
to
have
some
way
of
creating
references
and
there
we
could
read
whether
they
they
have
restrictions
on
what
kinds
of
references
they
can
create.
That's
that's
weaker
than
than
actually
trying
to
create
the
reference
and
seeing
if
it
fails
or
succeeds,
but
it's
it's.
A
C
A
A
C
Yeah
yeah
yeah,
I
mean
chances,
are
chances?
Are
you
you
will
process
an
ex
if
you're,
you
know,
if
you're
asking
for
an
exception
chances
are
you
would
process
it
before
you
return
control
to
node.js
and
therefore
to
the
engine
right.
So
so,
yes,
we
could
store
the
n
api
value
itself
without
creating
any
sort
of
reference
to
it.
C
But
then,
if
you
you
know,
if
you,
if
you
want
to
store
it,
you
know
in
a
variable
and
then
you
know
the
the
call
which
caused
the
exception
ends:
control
returns
to
javascript
and
then
later
you
know,
you
end
up
calling
some
other
api,
and
then
you
retrieve
that
an
api
value
that
may
or
may
not
be.
A
C
A
C
D
C
Yeah
yeah,
but
still
like
so
basically
I
don't
think
the.
I
don't
think
this
this
proposal
will
will
change
the
native
api
and
and
the
capabilities
of
the
engine.
B
C
Okay,
let's,
okay!
So
so,
if
you
store
the
integer
five
right
as
a
as
a
jerry
value
right,
then
no
matter
what
other
jerry
value
you
create
right,
whether
it's
a
string
or
another
integer,
five
or
or
or
something
like
that
it
like
it,
will
never
receive
the
the
the
pointer
value
five
right.
So
let's
say
I
have
a.
I
have
the
integer
five
and
then
I
have
a.
I
have
an
object
right.
If
I,
if
I,
if
I
print
the
jerry
value
t
for
that
object,
it
will
never
be
five.
C
It
will
always
be
something
else
right.
So
basically
the
integer
five
in
jerryscript
is
at
once
an
api
value.
If,
if
you
were
to
implement
an
api,
it's
at
once
an
api
value,
it
is
also
at
once
a
persistent
reference
to
the
value
5
right,
it's
both
so
so
so
then
you
know
you
can
just
treat
it
as
an
napi
reference.
A
C
It
would
just
it
would
just
be
like
the
primitive
value.
Five
again,
it
would
be
a
pointer
which,
when
printed
out
as
a
decimal,
would
be
five.
B
Yeah,
I
mean
it
will
work,
but
I
would
like
I
was
saying
that
if
the
engine
like
say
don't
exposing
the
symbols,
I
mean
what
I
would.
What
I
would
mean
is
actually
the
ultimately
is
saying
that
if
we
didn't
get
to
the
stage
to
reference
all
of
the
value
types,
then
the
minimum
request,
a
requirement
in
that
case
will
be
allowing
the
symbol
value
to
be
referenced.
So
that's
the
minimum
requirement
for
the
for
the
case.
C
A
C
Yeah
exactly
yeah,
I'm
pretty
sure
it
would
definitely
work
in
v8
and
I'm
pretty
sure
it
would
work
in
jerryscript
as
well,
because
in
javascript
you
can
just
like
you,
you.
Basically
you
have
to
release
a
value
unless
you're
using
it.
So
so
in
javascript,
pretty
much
everything
is
a
persistent
reference
like
if
you,
if
you
get
a
value
from
javascript,
you
have
to
afterwards
explicitly
release
it.
C
B
Yeah,
okay,
they
have
a
function
point
in
the
javascript,
so
every
value
passed
to
the
userland
side
will
be
automatically
dereferenced
by
the
endoscope.
C
Yeah,
okay,
yeah
yeah,
there's
yeah
right;
okay,
yes,
yes,
yes,
yes,
yeah!
It
will
release
our
reference
to
the
value,
but
what
about
like
being
like,
I
know
that
javascript
has
has
a
function
pointer,
you
can
give
it
and
then
it
informs
you
hey.
Listen
I
want
to.
I
want
to.
I
want
to
garbage,
collect
this
value,
so
you
know
you
better
do
whatever
you.
B
C
C
Well,
but
is
it,
though,
right
because
because
you
know
the
the
correct
me
if
I'm
wrong,
the
engine
reserves
the
pointer,
you
know
zero
x,
zero,
zero,
zero,
zero
five,
it
reserves
that
pointer.
It
never
uses
that
pointer
for
anything
except
the
integer
five,
whether
there
are
any
integers
five
present
in
the
javascript
code
or
not,
that
pointer
is
always
a
valid
value.
B
It's
always
a
value,
so
you
are
holding
your
your
copy
of
the
integer
file
in
the
parameters,
so
if
usually
the
pointer,
then
the
your
copy
is
gone,
but
the
other
copies
in
the
javascript.
They
are
still
reference
stored
by
values,
so
they
are
their
file.
Integer
is
still
still
there,
and
so
there
is
nothing
like
the
reference
in
the
small
integer
case.
C
Right,
okay,
okay,
but
okay.
So
let
me
ask
you
this?
Okay,
if
I,
if
I'm
writing
some
some
some
code
and
I
call
jerryscript
right,
can
I
just
say
like?
Can
I
okay?
Let's
say:
let's
say
you
know,
set
value
on
an
object
right.
I
I
will
not
say
jerry
create
integer.
I
would
just
say
you
know
jerry
set
value,
object,
comma
bracket
or
cast
2
jerry
value,
t
close
bracket
5.
B
C
Right
right
exactly
so
so
so
then
so
then
in
this
case
it
makes
no
sense
to
have
a
weak
reference
to
the
value
five
right,
because
it's
not
a
weak
reference,
because
it's
just
the
value
itself.
It
is
not
garbage
collected
because
it's
always
a
copy.
It's
never.
It's
never
an
object
that
is
referenced
or
not
referenced.
It's
always
just
a
value
right
exactly
so
then
so
then,
if
you
expect
so,
then
if
you
expect
somebody
to
call
the
the
weak
callback
on
the
primitive
value,
five
that
will
never
be
called
right.
C
C
A
I
guess
my
concern
is
like
if,
if
like
say
this,
you
know
our
api,
I
think
lets
us
create
stronger,
weak
references
right
yeah.
Can
we
get
into
the
case
where
people
are
asking
for
weak
references
like
today?
They
today
it
wouldn't
matter,
because
you
can't
ask
for
references
at
all
on
those
right.
Can
you
you
ask
for
a.
C
In
javascript
it
effectively
doesn't
because,
because
in
javascript
the
value
of
the
pointer
becomes
the
the
the
the
location
it
points
to
so
the
value
of
the
pointer
and
the
location
it
points
to
are
the
same
thing
in
jerryscript
right
in
in
v8.
They
are
not
in
in
right.
C
A
C
Yeah
yeah,
but
but
the
the
the
way
the
way
javascript
processes
pointers
is
that
it
will
treat
pointers
below
a
certain
value
as
not
pointers
but
values.
So
it
does
an
implicit
point
of
dereference.
If
you
want
to
look
at
it
that
way
so.
C
A
C
Yeah
you
can
you
can
you
can
think
of
it?
That
way,
like
the
the
pointer
with
the
value?
Five
is
always
pointing
to
something
that
is.
You
know
hard-coded
into
jerryscript,
that
something
is
really
nothing
because
because
it's
basically
a
bunch
of
special
cases
added
into
the
code
that
make
it
look
like
there's
some
magical
location
at
0x00005
right,
which
stores
some
magical
value,
but
it
never
does
because
because,
because
you
know,
whenever
you
try
to
access
that
location,
there's
a
special
case
that
says
oh
you're,
trying
to
access
that
location.
C
C
C
A
A
C
C
Yeah
and
and
okay,
I
I'm
not
sure
if,
if
jerryscript
sort
of
breaks
the
the
the
the
you
know
the
ecma
spec,
by
not
being
able
to
create
as
large
numbers
as
these
ecma
spec
javascript
is
supposed
to
be
able
to
create,
I'm
not
sure
if
they,
if
they,
if
they,
if
they
break
that
part
of
the
spec
or
if
they
comply
with
that
part
of
the
spec.
But
the
bottom
line
is
yes
there
there
are,
you
know
there.
C
There
are
some
numbers
you
might
not
be
able
to
express,
but
basically
the
the
you
know
they
they
they
solve
things
with
pointer
arithmetic.
At
that
point
you
know
so
they
they.
I
know.
I
know
that
that
the
javascript
value
has
like,
I
think,
the
top
level
bit
tells
you
whether
it's
a
primitive
or
not
and
and
so
forth.
And
so
so
you
know
if
the
top
level
bit
is
set,
then
it
behaves
like
a
pointer
and
if
the
top
level
bit
is
not
set,
then
it
behaves
like
a
primitive
value.
A
B
Yeah,
probably
they
are
actually
only
storing
very
small
integers
for
the
by
value
and,
let's
say
large,
integers
and
doubles.
They
are
still
referencing
storing
the
actual
value
in
some
place.
They
are
managing
so.
A
C
No
that's
right,
yeah
and
for
those
that
it
doesn't
do
it
by
value.
For
then,
then,
the
the
the
the
n
api
value
or
jerry
value
or
whatever
is
an
actual
pointer
to
an
actual
memory
location,
and
so
you
know
the
whole
referencing
and
weak
reference
and
weak
callback
and
all
that
stuff
actually
works
right.
But
if
it's,
if
it's,
if
it's
a,
if
it's
a
a
an
api
value
or
a
jerry
value
to
a
to
a
small
integer,
then
and
then
it
everything
still
works.
A
C
Yeah,
but
I
mean
I
mean
we
are
already-
we
are
already
presenting
the
caveat
that
you
know.
Yes,
the
weak
callback
may
or
may
not
be
called
it's.
It's.
E
A
Rest
yeah
and
core,
as
long
as
the
rest
of
the
the
engines,
yeah.
C
Just
think
about
it,
yeah
exactly
because,
like
think
about
it,
if,
if
we,
if
we
marshal
right,
if
we
choose
the
marshalling
approach,
then
for
all
the
for
all
the
types
that
we
marshal,
we
cannot
have
weak
references
right
because
right,
we
are
not
a
javascript
engine.
We
don't
know
when
a
certain
value
goes
out
of
scope
right
because
we
haven't
kept
a
reference
to
it
internally.
So
so
so
we
would
not
be
able
to
support
weak
references
to
any
of
these
any
of
these
errors,
whereas
if
we.
A
But
I
don't
think
we
need
to
do
any
of
that.
I
think
it's
just
that
we
marshal
them
and
we
associate
them
with
the
exception
right,
so
they
don't
need
to
individually
be
weak
or
not.
They
just
need
to
be
freed
when
the
object.
That
was
when
the
thing
that
was
thrown.
I
guess
it's.
Maybe
that's
not
the
case.
Well,.
A
A
A
C
I
mean
look,
we
can
you
know
we,
we
can,
we
can
sort
of
hack
it.
That's
that's
that's
one
thing
is
is
whenever
somebody
throws
a
primitive
value
right,
we
create
oh
by
the
way,
never
mind.
Never.
C
Yeah
yeah,
you
can't
create
the
object
yeah.
So
so
it's
basically
I
mean
I'm
sure,
there's
a
solution
for
for
when
to
destroy
it.
I
mean
at
at
worst
you
just
hook
up
you
just
hook
up
like
you,
just
create
a
cleanup
hook
and
you
store
these
things
on
the
linked
list,
and
then
you
just
walk
down
the
list
and
destroy
them
all
at
the
cleanup
hook
at
the
at
the
very
latest.
There
might
be
opportunities
to
destroy
them
sooner.
We
just
have
to,
but
I.
B
C
C
C
Yeah
yeah
and
you
know,
honestly,
we
we
always
make
an
effort
to
pave
over
differences
between
engines
right
like
we're.
We're
we're
basically
the
the
jquery
of
of
of
javascript
engine
native
apis
right,
but
there
is
only
so
much
we
can
do
if
an
engine
comes
along
tomorrow
that
doesn't
support
this
well,
we're
like
okay.
Well,
sorry,
every
other
engine
supports
this.
So
you
know
step
up
to
the
place.
C
A
A
A
point
in
time
thing
where
they
could
have
done
it,
but
anyway,
I
think
checking
those
other
ones
makes
sense
yeah
just
so
that
we
don't.
You
know
we're
sure
on
that
front,
and
then
that
might
be
a
suggestion.
I'd
suggest
we
take
the
discussion
back
to
github
at
this
point,
since
we've
used
most
of
the
time
yeah.
A
Okay
tracking
issue
for
modules-
I
don't
see
anything
new
there
and
we
don't
have
a
huge
amount
of
time
so
I'll
just
move
on.
I
haven't
enabled
debug
testing
for
add-ons.
So
now
I
think
all
that's
left
is
looking
at
issues
raised
by
module
owners.
This
is
way
out
of
date,
though.
So,
let's
just
look
at
first
of
all,
are
there
any
that
people
want
to
bring
up.
D
On
know
that
on
api
I
started
work
on
rapping
the
pull
request
for
wrapping
the
node
api
for
add
cleanup
hook.
The
first
one.
A
D
The
test
is
failing
just
because
of
line
endings
or
whatnot,
so
this
one
because
I
this
has
existed
since
like
version
three,
but
I
guess
we've
never
hooked
wrapped
it.
I
don't
know
why.
But
if
we
go
to
the,
I
guess
the
napi.h
file,
in
fact.
D
Okay,
come
on
yeah
this.
D
To
yeah
uh-huh,
so,
basically
what
what
the
api
the
c
api
allows
you
to
do
is
to
add
the
hook
and
remove
the
hook
right.
But
in
order
to
remove
the
hook,
you
have
to
pass
the
same
function,
pointer
and
hint
argument,
because
it's
that
same
pair
right.
D
D
D
If
that
sort
of
makes
sense
and
the
the
question
that
I
mainly
have
is
I
had
to
put
this
there
because
there's
these
the
the
rappers,
if
you're,
if
you're
it's
similar
to
how,
with
the
thread
safe
functions,
we
have
static
wrappers
that
we
pass
to
the
underlying
native
c
functions
and
in
my
comment,
if
you
click
that
link,
I
think
it'll
just
take
you
to
that.
D
D
So
the
reason
why
I
have
that
cleanup
data
being
public
is
because
it
has
to
be
typecast
here
online
341
in
348,
so
I'm
just
sort
of
looking
for
some
thoughts
about
that.
If
anyone
has
some
time
then,
like
the
test
I
have
at
the
bottom
is
sort
of,
I
think
the
tests
are
at
the
bottom.
I
can't
remember
all
right,
wait.
C
A
minute
wait,
wait,
wait,
wait,
wait,
wait,
wait,
wait!
A
second,
the
the
static,
the
static
cleanup
hook
right
that
you
end
up
passing
into
core.
Is
that
is
that
part
of
a
class
or
is
that
just
a
standalone
static,
cleanup
hook.
C
Okay,
okay,
so
so,
then,
I
think
the
the
way
you
want
to
do
it
is
that
the
the
the
the
thing
you
pass
to
the
thing
you
pass
to
core
is
a
is
a
static
member
function
of
the
same
class
that
has
the
pointer
and
then
the
pointer
can
be
private,
because
a
static
member
function
of
any
given
class
has
access
to
all
the
private
data
inside
that
class,
as
long
as
the
pointer
is
cast
to
a
an
instance
of
that
class.
C
So
if
class
x
has
method,
static,
y
and
the
and
static
static
y
accepts
a
pointer
of
type
x,
then
then
inside
the
implementation
of
static
method
y,
you
can
you
can
access
the
private
members
of
of
the
pointer
as
long.
So
you
know
what
I
mean
like
the
static
method
y
has
to
has
to
be
a
class
method,
and
then
you
can
make
everything
private.
D
A
D
C
Well
then,
then,
then,
add
a
method.
Add
a
method
to
the
class,
a
public
method
to
the
class,
which
you
know
does
the
right
thing.
It
may
just
be
an
access
or
you
you
may
just
say
you
may
just
say
you
know.
The
implementation
of
add
cleanup
hook
is
such
that
it
creates
a
new
instance
of
class
cleanup
hook
and
then
calls
the
method.
You
know
add
and
that's
it
and
then
you
know
what
I
mean,
and
so
basically
you
you
turn.
C
D
D
D
C
Yeah,
basically,
basically,
if
you
moved
everything,
if
you
moved
everything
below
below
the
return
statement
or
yeah
return,
cleanup
hook,
okay
hold
on
what's
going
on
here.
Oh,
you
have
two
different
overloads
of
at
cleanup
hook.
It
looks
like,
oh
because
one
is
with
the
hint
one
is
without
a
hint
yeah.
Okay,.
D
C
Exactly
yeah,
that's
yeah,
so
so
the
napi
call
is
here
yeah.
This
is
good,
okay,
then,
but
what
do
you
pass
it
right,
so
this
void
star
rapper,
that
is
the
users
yeah?
Okay,
so
yeah
don't
pass
the
user's
wrapper
in
there.
Oh.
C
Yeah
yeah,
so
so,
basically,
the
the
the
napi
add-in
cleanup
hook
call
should
be
happening
inside
the
class
that
stores
the
the
user
data
and
then
and
then
you
can
make
everything
private
right.
So
so
so
it
it
yeah.
It
has
to
happen
yeah.
That's
that's
what
has
to
happen?
Okay,
so
so
yeah,
so
yeah.
So
rapper
here
can
be
like
clean
up
hook.
Colon
colon
cleanup
hook
wrapper
right.
D
Okay,
yeah.
That
makes
sense,
then
so
then,
I'm
just
also
looking
to
see
if
I
can
also
tweak
it
to
work
also
with
the
async
cleanup
hooks
or
if
the
api
will
be
too
different
and
yeah.
C
The
api
is
slightly
different
because
in
in
the
case
of
the
async
cleanup
hook,
if
I
remember
correctly,
you
you
have
like
a
you,
have
like
a
like
a
token
that
you
that
you
receive
when
you
add
the
hook,
and
then
you
give
a
token
you
don't
give
this
a.
I
mean
conceptually.
It
is
the
same
api
but
but
implementation
wise
in
one
case.
You
do
have
this
this
token
and
in
the
other
case
the
token
is
the
function
and
the
pointer
itself.
D
Right,
okay!
Well,
that's
all
that
I
really
wanted
to
discuss
for
the
issues
that
I
had.
A
D
F
Yeah,
so
sorry
so
like
I
have
like
that
piara
like
for
the
symbols
for
a
while
now,
so
I
made
some
changes
based
on
the
feedbacks
and
just
wondering
if
you
guys
can
like
take
a
look
at
it
again,.
C
I
had
a
I.
I
had
an
objection
to
that.
Let
me
see
if
it
was
addressed.
What
was
my
objection
again
all
right,
let's
see
here.
C
C
Yeah
hold
on
hold
on
where
the
heck
was
it
okay,
blocking
until
we
figure
out
what
happens
when
you
pass
null
to
an
api,
create
string,
yeah.
So,
okay,
so
basically
bad
things
happen
when
you
pass
null
to
an
api,
create
string
utf-8
or
they
used
to
right.
They
don't
anymore,
because
I
landed
a
a
thing
that
will
refuse
to
create
a
string
if
you
pass
in
a
null
pointer
as.
A
C
Car
star,
but
that
change
does
not
save
us
from
having
to
to
do
the
same
check
here
and,
in
fact
aligning
the
return
value
with
with
whatever
is
happening
in
core,
because
the
changing
core
hasn't
yet
percolated
throughout
all
the
all
the
accepted
versions
right,
and
so
we
must
sort
of
do
double
the
work
here.
We
we
have
to
add.
C
We
have
to
add
a
null
check,
make
make
sure
that
the
const
car,
star
or
stan
well
standard
string
cannot
well,
I
don't
know
standard,
no,
it
can't
be
null,
but
the
the
the
override
or
the
overload
that
you
have
that
accepts
a
const
car
star
must
not
accept
the
null
it
must.
It
must.
What
must
it
do?
It
must
basically
throw
an
exception
of
type,
an
api
invalid
value
if
you
pass
in
a
null
pointer
cons,
car
star.
C
So
that
is
a
change
that
you
must
make
so
so
as
to
align
with
the
behavior
upstream,
and
so
yes,
we're
basically
making
the
same
change
that's
already
upstream,
but
for
the
purposes
of
you
know,
release
management
and
all
that
it's
easier
to
just
make
the
change
twice
than
it
is
to
wait
for
that
change
to
to.
Basically,
you
know
work
for
you.
F
C
Yeah
look
at
look
at
what,
like
we,
we
say
in
a
bunch
of
places
in
know
that
on
api's
implementation
we
have
something
like
return
or
throw
throw
something
if
failed
right.
So
so,
and
usually
we
we
say,
you
know
an
api
status
equals
make
this
an
api
call
and
then
throw
the
failed.
And
then
you
pass
the
status
right
and
that's
a
macro
that
that
that
will
throw
something
if
the
status
is
not
an
api.
Okay
right.
C
C
A
C
D
A
C
D
All
right
so
then,.
A
C
Basically,
symbol:
four
standard
string
description,
just
calls
string
new
and
then
symbol
for
the
the
an
api
string,
and
so,
if
we
add
the
check
to
string
new,
then
we
will
cover
all
of
this
code,
but
that
has
that
check
has
to
be
added.
First.
D
Right,
okay,
all
right!
That
makes
sense.
Then
one
thing
also:
maybe
if
you
continue
scrolling
down
a
little
bit
to
the
symbol
for
on
line
545,
we
might
as
well
remove
that
default
equals
null
pointer
since.
A
Okay,
I
I
have
to
actually
drop
off,
but
I
could
make
somebody
else
the
chair
and
I'm
also
on
holiday
next
friday.
So
gabriel,
can
you
chair
next
yeah
I'll.
A
C
D
Bye
all
right.
Well,
I
really
had
nothing
else
to
talk
about
and
deepak
already
had
left.
I
was
gonna
see
if
he
needed
to
talk
about
anything,
but
does
anyone
else
have
anything
to
talk
about.
C
So
I
just
just
to
wrap
it
up
with
jack.
So
do
you
think
you
can
make
that
change
in
in
string
you
in
the
in
the
cons,
car
star
version,
because
it's
it's
really
just
like
a
two-line
change
in
string
new
and
then
and
then
we're
good
to
go?
Okay.
F
So
I
guess,
like
I'll,
make
a
change
in
stream
stream
new
I'll
check.
If
I
get
a
null
pointer,
throw
an
error
and
then
from
I
don't
make
any
changes
from
symbol
4.
Apart
from
removing
the
default
parts.
F
B
D
B
D
D
C
Yeah
yeah,
you
know,
if
you,
if
you
want
a
chair,
then
you
should.
You
should
ask
to
be
added
to
the
to
the
node.js
youtube
administrators
list,
because
you
know,
if
you
want
to
do
live
streaming,
then
you
have
to
first
log
into
that
account
so
that
the
live
stream
gets
added
to
that
account.
C
So
that's
that's
like
one
step
you
need
to
do
if,
if
you
want
to
do
like
chairing
permanently
and
then
and
then
you
also
need
to
have
access
to
like
the
the
meetings
thing
like,
you
have
to
install
like
a
password
manager
because
we
have
like
meeting
passwords
and
that
kind
of
thing
so
and
I'm
not
sure
yeah
michael
knows
this
stuff.
So.
D
C
Meanwhile,
I
can
I
can
share,
because
I
have
that
whole
youtube
thing
already
set
up.
I
I
can
never.
I
can
never
live
stream
because
for
some
reason
you
can't
live
stream
if
you're
using
the
web,
client
and
the
native
client
doesn't
work
for
me,
but
at
least
I
can
record
and
then
upload
to
the
youtube
channel
later.
So
it's
it's
it's
kind
of
a
ugly
fallback,
but
at
least
I
have
it.
D
Okay,
then
legendary
cast.
Did
you
have
anything
else.