A ring-compliant ClojureScript HTTP client with a core.async API and monadic error handling