Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
How can variable be used in promise chaining before declaration?

I came across the following code while working with promises. And it works correctly.

I have read shallowly on how async/await code is run on node. But, in the following code, how is the session variable accessible inside the .then() function? Is it just by sheer chance that this code works or is there something about how node runs async/await code that makes the session variable available inside the .then() function?

async function asyncFunction(
  cb: (filePath: string, session: Session) => Promise<any>,
) {
    readFile().then(filePath => cb(filePath, session));
    const session = await verifyToken();
}
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Is it just by sheer chance that this code works?

Yes. If verifyToken takes longer than readFile, session will not be initialised when the .then() callback runs and you'll get an exception.

The proper solution for this problem is Promise.all, and not using a callback:

async function asyncFunction(): Promise<[filePath: string, session: Session]> {
    return Promise.all([readFile(), verifyToken()]);
}
about 4 years ago · Juan Pablo Isaza Report

0

This is a perfect example of variable scope. In your case this is a sheer chance that this code works. Since the readFile takes longer than verifyToken. As a result, the session variable is initiated before getting callback in then function.

In case the verifyToken takes longer that readFile (even just by a milli-second), then it would throw Cannot access variable before initialization Error.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!