XMLHttpRequest Abrir e Enviar: Como saber se funcionou

Como no título, minha pergunta é: É possível saber se os métodos open e send do XMLhttpRequest realmente funcionaram? Existe algum indicador? código de exemplo:

cli = new XMLHttpRequest();
cli.open('GET', 'http://example.org/products');
cli.send();

Eu estou tentando codificar o tratamento de falhas para isso, mas eu preciso ser capaz de dizer se a solicitação falhou para que eu possa lidar com isso.