Во-первых, если request - это одноименный модуль из npm - то в параметр body он передает Buffer, если там json, то его надо спарсить
var clients = JSON.parse(body.toString()).data
Во-вторых, сам запрос асинхронный, проще всего обернуть его в промис, итого будет что-то вроде этого:
modules.define('clients', function(provide){
provide({
getClients() { //неименнованные функции - плохо для отладки, поэтому меняем на es2015 метод
/* Получаем список суб-клиентов агенства (или представителей) */
var sendQ = {
"method": "GetClientsList",
"token": ""
};
var options = {
url: "САЙТ",
method: "POST",
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': 'Bearer'
},
json: true,
body: sendQ
};
//удалить, оно тут не надо
//var clients = '';
return new Promise((resolve, reject) => request(options, (err, res, body) => {
if(err) {
return reject(err); //прокидываем ошибку в промис
}
var clients = JSON.parse(body.toString()).data;
var client = clients.map(a => a.Login);
if(!client[0]) {
console.log('Client list getty - OK - ' + client[0]);
resolve(client[0]); //возвращаем client[0] из промиса
} else {
console.log('some problems');
reject(new Error('some problems'));
};
})).then(client => {
/* Список получен переходим к дальнейщим действиям */
}).catch(err => {
/* здесь обрабатываем ошибку */
});
}
});
});