Давайте и я свои 5 копеек внесу. В общем в свое время сильно прорабатывал эту тему и теоритически и практически, развешивая на клиентах кучу проверок и скармливая тестовый код десяткам тысяч людей. Даже гуглу писал об этом когда проходил сертификацию, гугл ОЧЕНЬ удивился. Но проверил и подтвердил.
В общем суть проста - любые операции старайтесь делать отложеными\defered, что по русски называется "заворачивать в таймаут", вообще для жизни прекрастной можно запорачивать в так называемые setZeroTimeout чтобы не терять время в житерах таймаутов( но это по желанию )