@@ -289,14 +289,13 @@ void proxy_c_to_js_get_dict(uint32_t c_ref, uint32_t *out) {
289
289
290
290
static const mp_obj_fun_builtin_var_t resume_obj ;
291
291
292
- EM_JS (void , js_then_resolve , (uint32_t * ret_value , uint32_t * resolve , uint32_t * reject ), {
292
+ EM_JS (void , js_then_resolve , (uint32_t * ret_value , uint32_t * resolve ), {
293
293
const ret_value_js = proxy_convert_mp_to_js_obj_jsside (ret_value );
294
294
const resolve_js = proxy_convert_mp_to_js_obj_jsside (resolve );
295
- const reject_js = proxy_convert_mp_to_js_obj_jsside (reject );
296
295
resolve_js (ret_value_js );
297
296
});
298
297
299
- EM_JS (void , js_then_reject , (uint32_t * ret_value , uint32_t * resolve , uint32_t * reject ), {
298
+ EM_JS (void , js_then_reject , (uint32_t * ret_value , uint32_t * reject ), {
300
299
// The ret_value object should be a Python exception. Convert it to a
301
300
// JavaScript PythonError and pass it as the reason to reject the promise.
302
301
let ret_value_js ;
@@ -305,7 +304,6 @@ EM_JS(void, js_then_reject, (uint32_t * ret_value, uint32_t * resolve, uint32_t
305
304
} catch (error ) {
306
305
ret_value_js = error ;
307
306
}
308
- const resolve_js = proxy_convert_mp_to_js_obj_jsside (resolve );
309
307
const reject_js = proxy_convert_mp_to_js_obj_jsside (reject );
310
308
reject_js (ret_value_js );
311
309
});
@@ -344,30 +342,33 @@ static mp_obj_t proxy_resume_execute(mp_obj_t self_in, mp_obj_t send_value, mp_o
344
342
mp_obj_t ret_value ;
345
343
mp_vm_return_kind_t ret_kind = mp_resume (self_in , send_value , throw_value , & ret_value );
346
344
347
- uint32_t out_resolve [PVN ];
348
- uint32_t out_reject [PVN ];
349
- proxy_convert_mp_to_js_obj_cside (resolve , out_resolve );
350
- proxy_convert_mp_to_js_obj_cside (reject , out_reject );
351
-
352
345
if (ret_kind == MP_VM_RETURN_NORMAL ) {
353
346
uint32_t out_ret_value [PVN ];
347
+ uint32_t out_resolve [PVN ];
354
348
proxy_convert_mp_to_js_obj_cside (ret_value , out_ret_value );
355
- js_then_resolve (out_ret_value , out_resolve , out_reject );
349
+ proxy_convert_mp_to_js_obj_cside (resolve , out_resolve );
350
+ js_then_resolve (out_ret_value , out_resolve );
356
351
return mp_const_none ;
357
352
} else if (ret_kind == MP_VM_RETURN_YIELD ) {
358
353
// ret_value should be a JS thenable
359
354
mp_obj_t py_resume = mp_obj_new_bound_meth (MP_OBJ_FROM_PTR (& resume_obj ), self_in );
360
355
int ref = mp_obj_jsproxy_get_ref (ret_value );
361
356
uint32_t out_py_resume [PVN ];
357
+ uint32_t out_resolve [PVN ];
358
+ uint32_t out_reject [PVN ];
362
359
proxy_convert_mp_to_js_obj_cside (py_resume , out_py_resume );
360
+ proxy_convert_mp_to_js_obj_cside (resolve , out_resolve );
361
+ proxy_convert_mp_to_js_obj_cside (reject , out_reject );
363
362
uint32_t out [PVN ];
364
363
js_then_continue (ref , out_py_resume , out_resolve , out_reject , out );
365
364
return proxy_convert_js_to_mp_obj_cside (out );
366
365
} else { // ret_kind == MP_VM_RETURN_EXCEPTION;
367
366
// Pass the exception through as an object to reject the promise (don't raise/throw it).
368
367
uint32_t out_ret_value [PVN ];
368
+ uint32_t out_reject [PVN ];
369
369
proxy_convert_mp_to_js_exc_cside (ret_value , out_ret_value );
370
- js_then_reject (out_ret_value , out_resolve , out_reject );
370
+ proxy_convert_mp_to_js_obj_cside (reject , out_reject );
371
+ js_then_reject (out_ret_value , out_reject );
371
372
return mp_const_none ;
372
373
}
373
374
}
0 commit comments