Back to all reviewers

consistent async/await usage

serverless/serverless
Based on 9 comments
JavaScript

When refactoring code to use async/await, ensure complete and consistent adoption throughout the function or module. Avoid mixing async/await syntax with .then() chains, as this creates confusing and hard-to-maintain code.

Concurrency JavaScript

Reviewer Prompt

When refactoring code to use async/await, ensure complete and consistent adoption throughout the function or module. Avoid mixing async/await syntax with .then() chains, as this creates confusing and hard-to-maintain code.

The pattern to avoid:

// Bad: mixing async/await with .then()
async function example() {
  const result = await someAsyncOperation();
  return result.then(data => processData(data));
}

// Bad: using .then() after await
await expect(awsPlugin.monitorStack('update', cfData, { frequency: 10 }))
  .to.eventually.be.rejectedWith(ServerlessError, 'An error occurred')
  .then(() => {
    // additional logic
  });

The preferred approach:

// Good: consistent async/await
async function example() {
  const result = await someAsyncOperation();
  const processedData = await processData(result);
  return processedData;
}

// Good: clean async/await in tests
await expect(awsPlugin.monitorStack('update', cfData, { frequency: 10 }))
  .to.eventually.be.rejectedWith(ServerlessError, 'An error occurred');
// additional logic follows naturally

When refactoring legacy promise-based code, complete the migration in dedicated commits or PRs before adding new functionality. This prevents the codebase from having inconsistent async patterns that are difficult to understand and debug.

9
Comments Analyzed
JavaScript
Primary Language
Concurrency
Category

Source Discussions