They are different. The biggest difference is that the first example has to wait for promise1 to complete before even trying promise2.
In the first example, the flow looks like this:
Call promise1
Wait for promise1 to complete and store in value1
Call promise2
Wait for promise2 to complete and store in value2
In the second example, the flow looks like this:
Call promise1
Call promise2
Wait for promise1 and promise2 to complete
In the second example, promise1 and promise2 can both be called so that promise2 doesn't have to wait for promise1 to complete.
Another way this might look is using Promise.all
ex:
const makeRequest = async () => { const [value1, value2] = await Promise.all([promise1(), promise2()]) return promise3(value1, value2) }
Promise.all will kick off both promises and wait for them all to complete before returning: Promise.all docs
The promise values are then placed into an array in the order the promises were in the promise array. Using destructuring, we can get those values back from the values array inline.