pub async fn write_async<S, A, E, F, Fut>(
    state: &OptionalCell<S>,
    interaction: JsValue,
    write_contract_method: F
) -> JsValuewhere
    S: Clone + Debug + Serialize,
    A: DeserializeOwned + Debug,
    E: Serialize,
    F: FnOnce(S, A) -> Fut,
    Fut: Future<Output = WriteResult<S, E>>,