bare-module 3.1.13 → 3.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/binding.c CHANGED
@@ -461,41 +461,43 @@ bare_module_run_module (js_env_t *env, js_callback_info_t *info) {
461
461
  err = js_instantiate_module(env, module, on_static_import, (void *) context);
462
462
  if (err < 0) return NULL;
463
463
 
464
- js_value_t *result;
465
- err = js_run_module(env, module, &result);
464
+ js_value_t *promise;
465
+ err = js_run_module(env, module, &promise);
466
466
  if (err < 0) return NULL;
467
467
 
468
468
  bool is_promise;
469
- err = js_is_promise(env, result, &is_promise);
469
+ err = js_is_promise(env, promise, &is_promise);
470
470
  assert(err == 0);
471
471
 
472
472
  if (is_promise) {
473
473
  js_promise_state_t state;
474
- err = js_get_promise_state(env, result, &state);
474
+ err = js_get_promise_state(env, promise, &state);
475
475
  assert(err == 0);
476
476
 
477
+ js_value_t *reason;
478
+
477
479
  if (state == js_promise_rejected) {
478
- js_value_t *error;
479
- err = js_get_promise_result(env, result, &error);
480
+ err = js_get_promise_result(env, promise, &reason);
480
481
  if (err < 0) return NULL;
481
-
482
- js_value_t *exception;
483
- err = js_get_and_clear_last_exception(env, &exception);
482
+ } else {
483
+ err = js_get_null(env, &reason);
484
484
  assert(err == 0);
485
+ }
485
486
 
486
- js_value_t *ctx;
487
- err = js_get_reference_value(env, context->ctx, &ctx);
488
- assert(err == 0);
487
+ js_value_t *exception;
488
+ err = js_get_and_clear_last_exception(env, &exception);
489
+ assert(err == 0);
489
490
 
490
- js_value_t *args[2] = {result, error};
491
+ js_value_t *ctx;
492
+ err = js_get_reference_value(env, context->ctx, &ctx);
493
+ assert(err == 0);
491
494
 
492
- js_call_function(env, ctx, argv[2], 2, args, NULL);
495
+ js_value_t *args[3] = {reason, promise, exception};
493
496
 
494
- return NULL;
495
- }
497
+ js_call_function(env, ctx, argv[2], 3, args, NULL);
496
498
  }
497
499
 
498
- return result;
500
+ return NULL;
499
501
  }
500
502
 
501
503
  static js_value_t *
package/index.js CHANGED
@@ -180,7 +180,7 @@ const Module = module.exports = exports = class Module {
180
180
  }
181
181
 
182
182
  _run () {
183
- binding.runModule(this._handle, Module._handle, Module._onrejection)
183
+ binding.runModule(this._handle, Module._handle, Module._onrun)
184
184
  }
185
185
 
186
186
  _evaluate (eagerRun = false) {
@@ -343,10 +343,14 @@ const Module = module.exports = exports = class Module {
343
343
  }
344
344
  }
345
345
 
346
- static _onrejection (promise, err) {
347
- promise.catch(() => {}) // Don't leak the rejection
346
+ static _onrun (reason, promise, err = reason) {
347
+ if (err) {
348
+ promise.catch(() => {}) // Don't leak the rejection
348
349
 
349
- throw err
350
+ throw err
351
+ } else {
352
+ promise.catch((err) => queueMicrotask(() => { throw err }))
353
+ }
350
354
  }
351
355
 
352
356
  static Protocol = Protocol
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bare-module",
3
- "version": "3.1.13",
3
+ "version": "3.1.15",
4
4
  "description": "Module support for JavaScript",
5
5
  "main": "index.js",
6
6
  "files": [