@@ -367,25 +367,23 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
367367 v8::Local<v8::Value> args[2 ];
368368 {
369369 node::errors::TryCatchScope try_catch (env);
370- v8::Maybe<bool > ret = ptr->ToResult (&args[0 ], &args[1 ]);
371- if (!ret.IsJust ()) {
370+ if (ptr->ToResult (&args[0 ], &args[1 ]).IsNothing ()) {
372371 CHECK (try_catch.HasCaught ());
372+ CHECK (try_catch.CanContinue ());
373373 exception = try_catch.Exception ();
374- } else if (!ret. FromJust ()) {
374+ ptr-> MakeCallback (env-> ondone_string (), 1 , &exception);
375375 return ;
376376 }
377377 }
378378
379- if (exception.IsEmpty ()) {
380- ptr->MakeCallback (env->ondone_string (), arraysize (args), args);
381- } else {
382- ptr->MakeCallback (env->ondone_string (), 1 , &exception);
383- }
379+ CHECK (!args[0 ].IsEmpty ());
380+ CHECK (!args[1 ].IsEmpty ());
381+
382+ ptr->MakeCallback (env->ondone_string (), arraysize (args), args);
384383 }
385384
386- virtual v8::Maybe<bool > ToResult (
387- v8::Local<v8::Value>* err,
388- v8::Local<v8::Value>* result) = 0;
385+ virtual v8::Maybe<void > ToResult (v8::Local<v8::Value>* err,
386+ v8::Local<v8::Value>* result) = 0;
389387
390388 CryptoJobMode mode () const { return mode_; }
391389
@@ -413,8 +411,9 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
413411 v8::Local<v8::Value> ret[2 ];
414412 env->PrintSyncTrace ();
415413 job->DoThreadPoolWork ();
416- v8::Maybe<bool > result = job->ToResult (&ret[0 ], &ret[1 ]);
417- if (result.IsJust () && result.FromJust ()) {
414+ if (job->ToResult (&ret[0 ], &ret[1 ]).IsJust ()) {
415+ CHECK (!ret[0 ].IsEmpty ());
416+ CHECK (!ret[1 ].IsEmpty ());
418417 args.GetReturnValue ().Set (
419418 v8::Array::New (env->isolate (), ret, arraysize (ret)));
420419 }
@@ -504,9 +503,8 @@ class DeriveBitsJob final : public CryptoJob<DeriveBitsTraits> {
504503 success_ = true ;
505504 }
506505
507- v8::Maybe<bool > ToResult (
508- v8::Local<v8::Value>* err,
509- v8::Local<v8::Value>* result) override {
506+ v8::Maybe<void > ToResult (v8::Local<v8::Value>* err,
507+ v8::Local<v8::Value>* result) override {
510508 Environment* env = AsyncWrap::env ();
511509 CryptoErrorStore* errors = CryptoJob<DeriveBitsTraits>::errors ();
512510 if (success_) {
@@ -515,16 +513,19 @@ class DeriveBitsJob final : public CryptoJob<DeriveBitsTraits> {
515513 if (!DeriveBitsTraits::EncodeOutput (
516514 env, *CryptoJob<DeriveBitsTraits>::params (), &out_)
517515 .ToLocal (result)) {
518- return v8::Nothing<bool >();
516+ return v8::Nothing<void >();
517+ }
518+ } else {
519+ if (errors->Empty ()) errors->Capture ();
520+ CHECK (!errors->Empty ());
521+ *result = v8::Undefined (env->isolate ());
522+ if (!errors->ToException (env).ToLocal (err)) {
523+ return v8::Nothing<void >();
519524 }
520- return v8::Just (true );
521525 }
522-
523- if (errors->Empty ())
524- errors->Capture ();
525- CHECK (!errors->Empty ());
526- *result = v8::Undefined (env->isolate ());
527- return v8::Just (errors->ToException (env).ToLocal (err));
526+ CHECK (!result->IsEmpty ());
527+ CHECK (!err->IsEmpty ());
528+ return v8::JustVoid ();
528529 }
529530
530531 SET_SELF_SIZE (DeriveBitsJob)
0 commit comments