Async ValidatedMethod called with Meteor.apply - causes parameters to be undefined

someMethod = new ValidatedMethod({
    name: 'someMethodName',
    validate: new SimpleSchema({
		subId: {type: String, min:1},
		planId: {type: String}        
    async run(params){
                     //params is undefined


Using async run(params) causes params to be undefined (seems like the context switches to Global context). Removing the async works fine. Why is this, and how can I still use await inside a ValidatedMethod?

Note1 : I get the same result if I try to use a regular Meteor.methods({}) definition. I am calling the method using Meteor.apply from the client

 Meteor.apply(methodName, methodArgs, {wait:true}, function(error, result){...});

Note 2: I have also traced it through to the internals of Meteor.apply , where it is in fact sending the paramsObject over DDP, in debug session:

  // Sends the DDP stringification of the given message object
  _send(obj) {

Many thanks for any insight.

not sure, but maybe you need to add the CallPromise mixin:

import { CallPromiseMixin } from 'meteor/didericis:callpromise-mixin';

Thanks for the suggestion. I currently have a method on the client side like so, which I believe does the same thing as the mixin

ClientHelpers.callWithPromise = function(methodName, methodArgs){
  //methodArgs must be an array
  return new Promise(function(resolve, reject){
    Meteor.apply(methodName, methodArgs, {wait:true}, function(error, result){
      if (error){

I then do this, on the client from where i want to call the server method (I’m sure paramsObject is correct):

var myResult = await ClientHelpers.callWithPromise('someMethodName', [paramsObject]);

I have been trying using Promise.await(...) instead of just await ... within async server side code - and it seems to work at least as a preliminary pass.
Got the notion from here:

If anyone has a more dumbed-down explanation of the difference, would greatly appreciate it. Thanks!