def set_resource_value_async(self, device_id, resource_path,
                                 resource_value=None, fix_path=True):
        """Set resource value for given resource path, on device.

        Will not block. Returns immediately. Usage:

        .. code-block:: python

            a = api.set_resource_value_async(device, path, value)
            while not a.is_done:
                time.sleep(0.1)
            if a.error:
                print("Error", a.error)
            print("Success, new value:", a.value)

        :param str device_id: The name/id of the device (Required)
        :param str resource_path: The resource path to update (Required)
        :param str resource_value: The new value to set for given path
        :param fix_path: Unused
        :returns: An async consumer object holding reference to request
        :rtype: AsyncConsumer
        """
        payload_b64 = self._base64_encode(resource_value)

        if not resource_path.startswith("/"):
            resource_path = "/" + resource_path

        return self._mds_rpc_post(
            device_id,
            method='PUT',
            uri=resource_path,
            content_type="text/plain",
            payload_b64=payload_b64
        )