So what we have here regarding async is:
IO<A>: An Async capable data type
AsyncContext<F>: A type class that can lift a callback into F whatever F means for example in this case IO
IOAsyncContextInstance: the global instance that adapts the behaviors of AsyncContext fullfilled by IO.