I've got into the pattern of using async await in my aws nodejs lambda functions, and I common thing I run into is the need to await the result of a promise and use the response in the next async/await promise, and sort of repeat this pattern until I've run all my logic.
let userId;
await GetUserId({AccessToken: headers.accesstoken}).then(function(res){
 userId = res;
},function(err){
});
let username;
await GetUserName(userId).then(function(res){
 username = res;
},function(err){
});
Is there anyway I can declare and assign userId a value in the same line as invoking the function.
sudo code:
let userId = await GetUserId().then(()=>{ //bubble response up to userId })
The reason I'm asking is that it just sort of messing/wrong initializing a variable separately. Maybe I need a different pattern, or it's just something I'll have to live with.
Solution
var ExampleFunction = async() => {
  try {
    const userId = await GetUserId('token');
    const username = await GetUserName(userId);
    console.log(`userId: ${userId}`);
    console.log(`username: ${username}`);
  } catch (err) {
    console.log(err);
    console.log(`Exit Function`);
  }
  function GetUserId(token) {
    return new Promise(function(resolve, reject) {
      if (!token)
        reject('no token');
      resolve('ID');
    });
  }
  function GetUserName(userId) {
    return new Promise(function(resolve, reject) {
      if (!userId)
        reject('no userId');
      resolve('NAME');
    });
  }
}
ExampleFunction();