use crate::{ContextRef, Value, ValueRef}; #[derive(Debug, Clone)] pub struct Promise { pub object: Value, pub resolve_fn: Value, pub reject_fn: Value, } impl Promise { pub(crate) fn new(object: Value, resolve_fn: Value, reject_fn: Value) -> Self { Promise { object, resolve_fn, reject_fn, } } pub fn dup(&self, ctx: &ContextRef) -> Self { Promise { object: self.object.dup(ctx), resolve_fn: self.resolve_fn.dup(ctx), reject_fn: self.reject_fn.dup(ctx), } } pub fn resolve(self, context: &ContextRef, value: &ValueRef) { let _ = self.resolve_fn.call(context, &[value]); } pub fn reject(self, context: &ContextRef, value: &ValueRef) { let _ = self.reject_fn.call(context, &[value]); } }