KernelClient: factor out generic async client from Qt client