I recommend the following: 1) read up on how Om.Next handles remote calls. Not that it&#x27;s the only way to do it, but it de-couples the async functionality of a remote call from the rendering loop. 2) Just code against something like Google Closure&#x27;s XHR libraries, making a HTTP call isn&#x27;t complicated, just wrap basic functions to suit your needs.<p>But over all, no matter what you use, core.async, or callbacks or whatever, limit the async bits to the edges of your code. Done correctly (Om.Next is a great example) you shouldn&#x27;t need a whole lot of async bits to get a nice clean app. If you have core.async &quot;go&quot; blocks littered all through your codebase, you&#x27;re doing something wrong.