@@ -14,9 +14,9 @@ using v8::FunctionCallbackInfo;
1414using v8::FunctionTemplate;
1515using v8::HandleScope;
1616using v8::Local;
17- using v8::MaybeLocal;
1817using v8::Object;
1918using v8::String;
19+ using v8::TryCatch;
2020using v8::Value;
2121
2222
@@ -98,24 +98,41 @@ bool JSStream::IsAlive() {
9898bool JSStream::IsClosing () {
9999 HandleScope scope (env ()->isolate ());
100100 Context::Scope context_scope (env ()->context ());
101- return MakeCallback (env ()->isclosing_string (), 0 , nullptr )
102- .ToLocalChecked ()->IsTrue ();
101+ TryCatch try_catch (env ()->isolate ());
102+ Local<Value> value;
103+ if (!MakeCallback (env ()->isclosing_string (), 0 , nullptr ).ToLocal (&value)) {
104+ FatalException (env ()->isolate (), try_catch);
105+ return true ;
106+ }
107+ return value->IsTrue ();
103108}
104109
105110
106111int JSStream::ReadStart () {
107112 HandleScope scope (env ()->isolate ());
108113 Context::Scope context_scope (env ()->context ());
109- return MakeCallback (env ()->onreadstart_string (), 0 , nullptr )
110- .ToLocalChecked ()->Int32Value ();
114+ TryCatch try_catch (env ()->isolate ());
115+ Local<Value> value;
116+ int value_int = UV_EPROTO;
117+ if (!MakeCallback (env ()->onreadstart_string (), 0 , nullptr ).ToLocal (&value) ||
118+ !value->Int32Value (env ()->context ()).To (&value_int)) {
119+ FatalException (env ()->isolate (), try_catch);
120+ }
121+ return value_int;
111122}
112123
113124
114125int JSStream::ReadStop () {
115126 HandleScope scope (env ()->isolate ());
116127 Context::Scope context_scope (env ()->context ());
117- return MakeCallback (env ()->onreadstop_string (), 0 , nullptr )
118- .ToLocalChecked ()->Int32Value ();
128+ TryCatch try_catch (env ()->isolate ());
129+ Local<Value> value;
130+ int value_int = UV_EPROTO;
131+ if (!MakeCallback (env ()->onreadstop_string (), 0 , nullptr ).ToLocal (&value) ||
132+ !value->Int32Value (env ()->context ()).To (&value_int)) {
133+ FatalException (env ()->isolate (), try_catch);
134+ }
135+ return value_int;
119136}
120137
121138
@@ -128,10 +145,17 @@ int JSStream::DoShutdown(ShutdownWrap* req_wrap) {
128145 };
129146
130147 req_wrap->Dispatched ();
131- MaybeLocal<Value> res =
132- MakeCallback (env ()->onshutdown_string (), arraysize (argv), argv);
133148
134- return res.ToLocalChecked ()->Int32Value ();
149+ TryCatch try_catch (env ()->isolate ());
150+ Local<Value> value;
151+ int value_int = UV_EPROTO;
152+ if (!MakeCallback (env ()->onshutdown_string (),
153+ arraysize (argv),
154+ argv).ToLocal (&value) ||
155+ !value->Int32Value (env ()->context ()).To (&value_int)) {
156+ FatalException (env ()->isolate (), try_catch);
157+ }
158+ return value_int;
135159}
136160
137161
@@ -157,10 +181,17 @@ int JSStream::DoWrite(WriteWrap* w,
157181 };
158182
159183 w->Dispatched ();
160- MaybeLocal<Value> res =
161- MakeCallback (env ()->onwrite_string (), arraysize (argv), argv);
162184
163- return res.ToLocalChecked ()->Int32Value ();
185+ TryCatch try_catch (env ()->isolate ());
186+ Local<Value> value;
187+ int value_int = UV_EPROTO;
188+ if (!MakeCallback (env ()->onwrite_string (),
189+ arraysize (argv),
190+ argv).ToLocal (&value) ||
191+ !value->Int32Value (env ()->context ()).To (&value_int)) {
192+ FatalException (env ()->isolate (), try_catch);
193+ }
194+ return value_int;
164195}
165196
166197
0 commit comments