Um reator permite que várias tarefas que bloqueiam (digamos devido a IO) sejam processadas de forma eficiente usando um único thread. O reator gerencia um pool de manipuladores e executa um loop de eventos. Quando é chamado para executar uma tarefa, ele o vincula a um manipulador novo ou vazio, tornando-o ativo. O loop de evento (1) encontra todos os manipuladores que estão ativos e desbloqueados (ou delega isso a uma implementação de despachante) (2) executa cada um desses manipuladores encontrados sequencialmente até que sejam concluídos ou cheguem a um ponto em que sejam bloqueados. Os manipuladores concluídos tornam-se inativos e vazios para reutilização, enquanto os manipuladores ativos bloqueados se rendem, permitindo que o loop de eventos continue. (3) Repete a partir da etapa (1)