Abstractions for Asynchronous User Interfaces in Web Applications