Estamos acostumados a programar utilizando um fluxo de execução síncrono. Porém, nos dias de hoje, programar em JavaScript contempla inúmeras operações assíncronas. Desde um simples timer utilizando setTimeOut, passando por respostas a eventos do DOM ou requisições assíncronas AJAX até operações de I/O como a escrita de um arquivo. A compreensão e domínio da programação assíncrona é essencial para o desenvolvedor JavaScript moderno. Nesta palestra serão apresentados inúmeros conceitos e exemplos relacionados a programação assíncrona. Falaremos sobre fluxo de execução de um programa, programação assíncrona, callbacks e closures, promises, generators e funções async.