►
From YouTube: Node.js N-API Team meeting - July 27 2020
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
Welcome
to
the
napi
team
meeting
for
july
27
2020.
we'll
follow
our
regular
agenda
and
starting
out
with
that,
we
will
I'll
ask
if
there's
any
announcements.
Anybody
would
like
to
share.
A
B
Right
so
I
recently
sent
an
email
to
the
team
if
you
could
open
that
email
up.
That
would
be
great
because
it
has
some
some
links
in
there.
Okay,
let
me
see
if
I
can.
D
A
A
It's
just
not
copying
any
links.
Let
me
see
if
sec,
I'm
gonna,
try
one
other
thing
here.
No,
I
just
know
that
it's
just
too
easy
to
then
click
on
the
wrong
thing.
B
That,
okay,
yes,
okay!
So
what
I'm
seeing
in
this
failed
build
is
that
it's
failing
on
some
platforms
and
not
other
the
platforms
that
it's
failing
on
is
always
mac,
but
not
necessarily
it's
some
compilers
and
some
not
and
I've
been
I'm
not
able
to
replicate
the
issue.
B
B
Oh,
it
doesn't
seem
to
be
doing
that
window
now
because
it's
yeah
now
I'm
going
to
share
that
separately,
I'm
sorry
yeah
and
then
I
guess
we
could
just
only
look
at
that
particular
window
because
we
can
maybe
just
go
from
there.
This.
B
Correct
so
this
is
the
error
that's
coming
and
this
particular
function
call
in
the
c
plus
plus
code
is
just
returning
a
promise
that
eventually
gets
resolved
from
the
thread
safe
function.
Now,
I'm
not
sure
why
this
is
failing
on
some
platforms
and
not
others.
It's
a
very
simple
call
in
mind
in
my
mind,.
A
B
And
then
well,
I'm
also
unsure.
Is
that
error
saying
that?
Is
it
an
error
that
the
the
javascript
call
timed
out
or
is
it
saying
that
the
promise
resolution
times
out?
I'm
not
exactly
sure,
so
I
just
chatted
a
link,
a
chat
of
the
link
in.
E
B
Zoom
with
the
the
call
that
gets
executed,
so
if
you
can
open
that
in
this
window
too,
you
can
see
it
it's
pretty
simple
here,
so
I
create
this.
This
new
data
type
structure
that
has
a
reference
to
to
a
function
which
is
passes
info
zero,
that's
the
the
first
parameter
and
then
I
create
a
new
deferred
as
the
second
property
in
the
structure
on
line
65.,
and
I
believe
that's
the
correct
way
to
do
it.
B
B
B
F
Sorry
go
ahead,
gabriel
yeah,
so
we
we
had.
We
had
issues
with
with
deadlock
when
you,
when
you
call
when
you
call
from
the
main
thread.
So
if
you,
if
you,
but
I
believe
that
was
a
blocking
call
from
the
main
thread.
So
the
the
problem
on
the
main
thread
is
that,
if,
if
the
call
would
block
right,
then
then
then
it'll
block
the
main
thread,
which
is
also
responsible
for
emptying
the
queue
and
therefore
unblocking
right
and
so
that
that
was
the
that
was
the
deadlock.
F
But
if
I
remember
correctly,
the
deadlock
was
when,
when
it
was
a
blocking
call,
not
a
non-blocking
call,
so
an
unblocking
call
obviously
shouldn't
block
on
any
thread
right.
So
if
so,
but
anyway,
it
feels
like
that
same
problem
that
that
we
had
with
with
with
blocking
calls
from
the
main
thread.
B
Call
that
is
my
object.
Wrap
tsfn
is
an
object,
wrap
and
call
is
a
method
on
that
object
right
and.
B
I
am
not.
I
have
no
clue
it's
because
timeout
dot
underscore
on
timeout,
I
don't
know.
I
have
no
idea
what
that
is.
My
call
is
just
like
in
my
javascript:
it's
a
await
tsfn.call,
so
maybe
it's
some
sort
of
async
thing,
because
it's
in
a
weight-
and
it's
trying
to
do
that
like
so
I
don't
know
I've
never
seen
this
underscore
on
timeout
thing
before
it.
Maybe
it's
internal
to.
A
B
Exactly
yeah,
I'm
pretty
sure,
that's
what
that
is.
Let
me
verify
base
come
on.
Computer
go
faster
basic
js.
B
C
B
A
B
So
this
particular
one
needs
to
make
a
call
back
with
no
data
and
we
need
to
one
two
three,
four,
five.
B
What
so
I
use
zero?
I
know
that
I
have
to
use
zero
because
I
make
a
call
the
call
that
gets
done.
This
non-blocking
call.
I
need
it
to
execute,
so
I
do
a
set
timeout
zero
in
order
to
check
that
this
reject
value
on
line
133,
whether
it's
been
set
or
not,
because
but.
B
B
B
A
B
Okay,
I
mean
that
would
make
sense,
possibly
then,
if
it
were
like
somehow
platform
dependent,
because
if
it's
time
out
related
that,
maybe
I.
A
E
A
B
So
that
makes
sense,
so
I
could
definitely
refactor
this
test.
It
was
basically
trying
to
do
a
test
with
no
data
and
going
to
the
call-
and
I
was
making
it
such
that
the
function
being
executed
was
was
bound
via
scope
to
to
change
a
value
that
was
later
being
checked.
I
mean
I'll
just
refactor
this
test,
then.
B
B
B
F
B
Can
you
scroll
up
there
it's
in
new
tsfn
wrap,
so
this
is
the
main
function
get
that
gets
called
and
it
checks
whether
it
exists
or
not,
because
some
tests
run
and
some
don't.
F
Okay,
understood:
okay,
okay,
oh
I
see
so
yeah,
it's
not
defined
there.
It's
just
a
sign
there.
Okay,
understood
correct
okay,
so
so
then
the
other.
The
other
sort
of
observation
that
I
have
is
that
this
being
a
threat
say
function
right,
the
the
safest
way
to
know
whether
your
non-blocking
call
has
happened
or
not
is
to
to
to
have
like
a
like
a
javascript
callback
passed
into
it.
F
F
So
so
I
I
know
you're
trying
different
abstractions
on
top
of
it,
but
but
that's
the
basic
functionality,
so
you
can
know
synchronously
at
what
point
in
the
event
loop,
the
call
has
happened
if
you
let
the
call
call
back
into
javascript
right
yeah,
so
you
don't
have
to
worry
about
the
the
sequence,
because,
because
this
being
this
I
know
you're
making
the
call
from
the
from
the
main
thread.
So
there's
no
actual
real-time
threading
interaction
happening
right.
G
F
But
if
you,
if
you,
if
you,
if
you
give
it
a
call
back
to
call
back
into
js
that
you
don't
need
to
worry
about,
you
know
which
part
of
the
event
loop,
you're
in
and
so
on
and
so
forth,
because
it
will
call
back
into
js
at
exactly
the
right
time.
You
know.
So
you
will
know
you
don't
have
to
set
a
timeout
to
to
see
if
the
call
has
happened
or
not
because
it
will
let
you
know
that
the
call
has
happened.
You
know,
but.
F
B
F
B
B
B
A
B
Yes,
because
my
I
now
have
a
meetings
every
week
at
5
30,
so
at
the
half
5
30
to
6
30.,
so
I
actually
have
to
jump
off
soon.
A
Earlier
and
later.
B
And
later
is
hard
for
for
lucas.
B
B
See,
okay,
all
right,
then,
okay,
then
I
will
try
updating
those
tests
and
let
you
guys
know
and
I'll
tell.
A
A
A
Okay,
review,
okay,
this
one
I
just
mentioned
there
was
there's
this
workshopper
going
native,
where
there
were
some
napi
examples
and
they
were
they.
It's
landed
now,
but
they
were
looking
for
some
review,
which
I
never
got
to,
and
I
should
have
actually
just
put
it
here
so
that
other
people
could
have
taken
a
look
if
they
have
a
chance.
So
I
thought
anyway,
I
put
it
here.
If
people
have
a
chance,
it
would
be
good
to
have
somebody
take
a
look
and
giving
him
feedback
or.
A
So
I
don't
think
there's
so
much
else
workshop
proposal-
I
guess
we
don't
have
gym
this
week,
so
probably
no
update
on
that
enabled
debug
testing
for
add-ons.
I
don't
think
we've
done
anything
on
that
one.
A
A
G
Yeah
foreign.
A
G
My
idea
is
to
do
something
like
no
jeep,
so
I'm
trying
to
to
build
a
native,
a
simple
native
add-on
and
one.
G
G
Using
the
name
folder
with
and
without
the
space
and
and
then
I
attached
these
a
simple,
build,
a
dawn
and
yeah.
This
is
all
what
I
can.
I
can
do
for
now.
A
G
Okay,
I
I
can
I
I
yeah.
G
You
can
insert
multiple
includeds
under
conditions,
but
if
you,
if
you
insert
multiple,
includes
on
a
same
level,
you
will
get
an
error
so.
A
G
So
if
you
in
your
binding
jeep,
you
insert
two
includers
one
before
after
you
will
get
an
error.
Instead,
if
you
insert
in
good
deals
under
some
conditions,
all
work
good.
G
Yeah
yeah,
so
the
solution
is
to
yeah
insert
the
the
all
in
one
include
tiers,
because
it's
an
array,
it's
yeah.
So
I.
H
E
G
Okay,
if
I
have
multiple
things
in
the
array,
all
work.
A
G
G
G
A
G
Yeah,
okay,
so
for
now
I
I
will
add
these
essentially
a
few
two
new
tests
and
then
yeah.
I
try
to
provide
some
new
yeah.
I
try
to
get
to
get
a
new
new
problems
and
yeah
I
mean
I
will
update
these
guys.
G
G
G
Yeah
I
try
to
to
answer,
but
I
think
that
yeah,
he
is
using
it's
a
function
and
I
cannot.
F
F
F
A
A
E
G
D
It's
just
above
that.
F
D
F
This
one
well
that
that's
that
that's
an
issue
I
filed,
while
looking
at
the
tests,
so
you
know
in
core
we're
we're
doing
this
asynchronous
gcing,
and
so
I
figured
well
okay.
This
person
would
like
to
try
it,
but
another
person
has
already
filed
a
pr.
F
That
was
a
quick
fix,
so
basically,
since
since
gcd
is
now
asynchronous
right,
we
have
some
tests
that
do
a
gc
right
and
so
far
our
tests
have
have
have
been
fired
from
from
from
a
very
tight
synchronous
loop
in
in
test
index.
Js
right
and
some
of
those
are
asynchronous
and
the
test
itself
runs
correctly
asynchronously,
but
but
because
it's
asynchronous
it
returns
sooner
than
the
test
is
actually
done
right.
F
Yeah
yeah,
so
the
reason
the
reason
for
that
is
that
is
that
it
prints
out
synchronously
after
it's
done
the
loop
that
launches
the
tests
that
it's
finished
tests,
but
that's
assuming
the
tests
are
synchronous
right,
and
so
so
there
are
still
outstanding,
asynchronous
callbacks
when
it
when
it
prints
that
right
and
so
two
two
things
can
go
wrong.
I've
seen
it
where
it
says
all
tests
finished
successfully
and
then
it's
set
faults
because
one
of
the
tests
fails.
F
The
the
other
thing-
and
this
is
perhaps
more
concerning
at
least
for
for
debugging
when
you're
trying
to
debug-
is
that
because
the
tests
run
asynchronously,
they
also
run
asynchronously
relative
to
each
other.
So
you
have
asynchronous
callbacks,
set
up
by
one
test
being
executed,
while
asynchronous
callbacks
set
up
by
another
tests
are
also
present
right,
and
so
so
you
can
sometimes
have
us,
especially
now
with
with
asynchronous
gc.
F
You
can
have
a
situation
where,
where
the
gc
throws
an
exception
or
or
an
exception
is
being
thrown,
and
it
appears
to
be
coming
from
one
test
when
in
fact
the
exception
belongs
to
another
test,
so
I
think
for
for,
for
just
for
sanity
and
and
for
for
for
cleanliness
sake.
I
think
what
we
need
to
do
is
we
need
to
not
only
string
the
tests
together
so
that
the
loop
waits
for
one
test
to
finish
before
it
launches
another
test,
but
also
within
the
test.
F
F
The
way
it
is,
or
both
tests
are
asynchronous,
in
which
case,
in
which
case
we
sort
of
run
them
to
you
know
we
run
them
concurrently
and,
and
by
concurrent
I
don't
mean
actual
threading
wise
concurrent,
but
in
that
you
know,
asynchronous
products
on
the
effect
loop
are
interleaved
from
the
two
ways
in
which
we
test
so
and
then,
of
course,
we
have
like
tests
that
that
do
gc-ing,
which
they
kind
of
do
it
asynchronously
already,
because
we
have
this
test.
F
Util
run
gc
test
tests
which,
which
are
asynchronous,
but
they
are,
they
also
sort
of
interleave,
the
the
the
asynchronous
callbacks
with
everybody
else.
So
basically,
this
pr,
what
it
does
is
is
it
tries
to
just
basically
create
a
very,
very
long
promise
chain.
You
know
to
make
sure
that
that
everything
that
is
asynchronous
runs
by
itself.
A
F
So
that,
whether
that
be
individual
tests
or
whether
that
be
individual,
asynchronous
callbacks
within
a
single
test,
they
they
must
all
run
in
sequence
rather
than
concurrently.
F
So
this
is
in
preparation
for
for
what
has
already
landed
in
core,
which
is
the
which
is
the
asynchronous
gc-ing
right,
and
I
I
got
it,
I
got
it
to
I
it
actually.
I
actually
was
able
to
uncover
some
some
timing
issues
in
one
of
the
thread
safe
function
tests
and
I
fixed
that
one.
Basically
in
the
sum
test,
sometimes
like.
F
Basically,
the
sum
test
was
trying
to
be
fire
and
forget
basically
saying
you
know,
create
create
the
thread
say
function
on
the
main
thread
and
then
immediately
release
it
and
then
well,
no
create
the
thread,
save
function
and
then
have
it
be
acquired
by
by
by
the
thread.
So
you
create
the
thread,
say
function,
then
you
create
the
threads
and
then
the
main
thread
releases.
The
thread
save
function
synchronously.
So
what
I
just
described
is
synchronous.
F
The
problem
is
that
if
none
of
the
threads
acquire
it
before
the
main
thread
releases
it
then
then
one
can
no
longer
acquire
a
threat.
F
Say
function
that
is
not
being
referenced
from
anywhere,
and
so
this
situation
was
happening
on
on
mac,
I
think,
and,
and
basically
you
can't
like
it
was-
it
was
basically
short-circuiting
like,
instead
of
instead
of
calculating
the
the
actual
summary
was
calculating
zero
because
the
threads
never
had
a
chance
to
acquire
the
threat,
save
function
and
so
so
yeah
that
that
was
a
timing
issue
that
got
uncovered
when
I,
when
I
refactored
this
so
so.
The
fix
for
that
issue
is
also
in
this
pr.
Okay,.
G
F
I
have
one
more
outstanding
issue
that
is
also
happening
on
some
platforms
on
our
on
our
own
ci.
I'm
I
haven't
tracked
that
one
down
yet
but
I'll
fix
that
one
as
well,
so
yeah,
that's
what
this
pr
is.
Okay,
and
needless
to
say,
it
now
says
all
all
tests
finished
when
all
tests
are
actually
finished.
Yeah,
okay,.
A
Because
that's
good
yeah,
I
was
always
thinking,
there's
something
there.
That's
not
quite
the
way
it.
F
E
F
F
The
the
the
pr
does
have
one
shortcoming
which
is
really
hard
to
to
test,
and
that
is,
I
don't
know
if
I
have
caught
and
correctly
handled
all
failure
scenarios
because
we're
using
a
lot
more
promises
now
right
and
so
so.
Those
would
turn
into
rejections
instead
of
instead
of
throwing
out
right
right,
and
so
I
am,
I
am
throwing
a
rejection
at
the
end
of
everything
I
will
catch
and
and
and
throw
like.
If
you
look
at
test.
E
F
Js
in
the
pr
it'll.
Finally,
after
everything
is
said
and
done,
it
has
a
dot
catch
error,
so
it
will
catch
that
and
hopefully
that
will
catch
everything
and
and
and
then
throw
the
the
first
error
that
it
runs
across.
F
A
F
Yeah
exactly
yeah
yeah,
so
I
I'm
I'm
not
sure
how
to
handle
that
right
now.
The
way
the
pr
does
it
is
is
the
first
failure
will
cause
everything
to
fail
and
stop
and
so
forth.
So
that's
not
ideal,
and
so
that's
another
thing
I
haven't
figured
out
yet:
okay,
but
yeah.
I
I
it
may
be
worth
like
if
I
figure
out
the
last
failure
on
on
mac
os
on
on
our
platform,
I
figure
out
why
that
is
there's
another
test
that
needs
that
needs
some,
probably
some
synchronization.
F
If
I
figure
that
out,
I
I'm
not
sure
if,
if,
if
it
isn't
okay
to
land
without
having
this
run
all
tests
anyway
thing
because
I
think
it's
important
that
we
have
them
strung
up
so
that
so
that
you
know
they,
there
is
no
cross
test
pollution
thing
going
on.
I
think
that's
pretty
important,
but
on
the.
A
A
I
F
Yeah
yeah,
okay,
all
right
all
right,
so
so
I'll,
just
I'll
keep
working
at
it
figure
out
that
one
issue
and
and
then
and
then
this
should
be
good
to
land
and
then
and
then
I
can
figure
out
how
to
how
to
handle
individual
failures
and
not
bail
out
like
basically,
they
just
like
keep
looping,
but
right,
because
that
should
be
the
punches
like.
A
A
We
expect
most
of
the
time
the
test
should
all
pass.
Yes
right,
so
it
should
be
a
common.
I
I
know
what
you're
saying
it's
still
definitely
as
frustrating.
If,
like
the
first
one
fails
and
then
you've
got
to
run
it
the
next
time
and
find
the
next
one
fails
like
you
might,
if
you've
introduced
five
tests,
you'd
rather
know
that
they
all
failed
right.
So
I
definitely
yeah,
but
on
the
other
hand
like
in
the
ci
and
so
forth,
it
shouldn't
be
common
that
things
fail.
So
true,
at
least
for
some
period
of
time.
F
Yeah,
okay,
yeah!
So
so
that's!
Basically
what
this
is
and
yeah
I'm
still
working
on.
It
fix
that
last
failure.
A
Sounds
good
any
others
you
want
to
highlight,
or.
F
No,
why
why
is
source
ad
add-on
t-class
still
open?
I
thought
I
closed
that,
like
I,
I
landed
that
that's
on
master,
oh,
okay,
okay,
just
wasn't
refreshed.
That's
all,
never
mind,
that's
weird!
F
No!
It
does
that
sometimes
yeah.
I
mean
I've.
I've
I've
had
it
where
I've
I've,
canceled
I've,
canceled
ci
jobs,
because
I
thought
they
they
were
already
failed
and
then
they
weren't
and
right.
Okay.
So,
basically.
A
D
A
Terms
of
getting
that
okay,
so
if
nobody
else
has
any
others
there,
let's
just
take
a
quick
look
on
the
node
side,
see
if
there's
anything.
F
F
A
A
Issues
and
nothing
new
either
on
the
the
side
of
things
either.
A
Okay,
anything
else,
we
think
we
should
talk
about
this.
A
A
Okay,
well
yeah,
if
you
can,
if
you
can
do
that,
and
so,
if
I
don't
and
I'll
probably
talk
to
people
through
github
between
now
and
the
end
of
the
week,
but
otherwise
I'll
see
in
a
couple
weeks,
all
right.
Okay,
talk
to
everybody
later.