MCPcopy Create free account
hub / github.com/emscripten-core/emscripten / reject_with

Method reject_with

system/include/emscripten/val.h:808–826  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

806};
807
808inline void val::awaiter::reject_with(val&& error) {
809 auto* coro_ptr = std::get_if<state_coro>(&state);
810 assert(coro_ptr && "Invalid awaiter state: expected suspended coroutine handle.");
811 auto coro = *coro_ptr;
812
813 if (coro.is_val_promise) {
814 if (!internal::_emval_is_catchable_cpp_exception_object(error.as_handle())) {
815 // C++ code cannot catch JS exceptions.
816 // Thus, we can just reject an enclosing JS Promise.
817 auto& promise = std::coroutine_handle<promise_type>::from_address(coro.handle.address()).promise();
818 promise.reject_with(std::move(error));
819 coro.handle.destroy();
820 return;
821 }
822 }
823
824 state.emplace<state_error>(std::move(error));
825 coro.handle.resume();
826}
827
828#endif
829

Callers 1

_emval_coro_rejectFunction · 0.45

Calls 6

moveFunction · 0.85
promiseMethod · 0.80
assertFunction · 0.50
addressMethod · 0.45
destroyMethod · 0.45
resumeMethod · 0.45

Tested by

no test coverage detected