Synchronous versus asynchronous tasks