У меня есть следующий код, который использует веб-службу мыла:
var soap = require('soap');
var url = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL';
var args = { ubiNum: '1234' };
soap.createClientAsync(url).then((client) => {
return client.NumberToWordsAsync(args);
}).then((result) => {
console.info(result[0].NumberToWordsResult)
});
И я пытаюсь переписать его с помощью await, это моя попытка сделать это:
var soap = require('soap');
var url = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL';
var args = { ubiNum: '1234' };
var client = await soap.createClientAsync(url);
var result = await client.NumberToWordsAsync(args);
console.info(result[0].NumberToWordsResult)
Но я получаю следующую ошибку:
var client = await soap.createClientAsync(url);
^^^^^
SyntaxError: await is only valid in async function
Что мне не хватает?
Кстати: вот замена на случай, если кто-то захочет поиграть с ним: https://repl.it/@opensas/BasicNodeSoapClientWithPromises



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


await будет работать только внутри асинхронных функций. Вы не можете размещать операторы ожидания, отличные от асинхронных функций. Таким образом, вы можете переписать свой код, например,
(async function() {
var soap = require('soap');
var url = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL';
var args = { ubiNum: '1234' };
var client = await soap.createClientAsync(url);
var result = await client.NumberToWordsAsync(args);
console.info(result[0].NumberToWordsResult);
})();