retrieve(binary(), Client.t()) :: {atom(), map()}
send(map(), Client.t()) :: {atom(), map()}
wait_for(binary(), Client.t()) :: {:ok, list()}
wait_for(binary(), Client.t(), map()) :: {:ok, list()}