code: async function () {
      const oThis = this
        , web3Provider = web3ProviderFactory.getProvider(oThis.chain, 'ws')
        , abi = coreAddresses.getAbiForContract(oThis.contractName)
        , contractObj = new web3Provider.eth.Contract(abi)
        , bufferGasLimit = 10000
      ;
  
      contractObj.options.address = oThis.contractAddress;
      //contractObj.setProvider(web3Provider.currentProvider);
  
      const transactionOptions = {
        from: oThis.senderAddress,
        gasPrice: (oThis.chain === 'value') ? VC_GAS_PRICE : UC_GAS_PRICE,
        gas: (oThis.chain === 'value') ? VC_GAS_LIMIT : UC_GAS_LIMIT
      };
  
      const scope = contractObj.methods
        , gasToUse = await (scope[oThis.methodName].apply(scope,
        (oThis.methodArguments || []))).estimateGas(transactionOptions);
  
      return responseHelper.successWithData({gas_to_use: gasToUse + bufferGasLimit});
    }
docs: Perform<br><br>
  
  @return {promise<result>} - returns a promise which resolves to an object of kind Result