Como lidar com a assincronicidade em JavaScript (callbacks, Promises, async/await)?