boolean matches(final byte[] packet) {
		return filter == null || filter.filter(packet);
	}
Same as {@link #await(Object, long)}, but if received response is not valid,
this method will thrown an exception.

@param response the result object.
@param timeout  optional timeout in milliseconds.
@param <E>      a response class that extends {@link ProfileReadResponse}.
@return Object with a valid response.
@throws IllegalStateException       thrown when you try to call this method from
                                    the main (UI) thread.
@throws InterruptedException        thrown when the timeout occurred before the
                                    characteristic value has changed.
@throws CancellationException       thrown when the request has been cancelled.
@throws RequestFailedException      thrown when the trigger request has failed.
@throws DeviceDisconnectedException thrown when the device disconnected before the
                                    notification or indication was received.
@throws BluetoothDisabledException  thrown when the Bluetooth adapter has been disabled.
@throws InvalidRequestException     thrown when the request was called before the device was
                                    connected at least once (unknown device).
@throws InvalidDataException        thrown when the received data were not valid (that is when
                                    {@link ProfileReadResponse#onDataReceived(BluetoothDevice, Data)}
                                    failed to parse the data correctly and called
                                    {@link ProfileReadResponse#onInvalidDataReceived(BluetoothDevice, Data)}).
@deprecated Use {@link #timeout(long)} and {@link #awaitValid(E)} instead.
ble/src/main/java/no/nordicsemi/android/ble/WaitForValueChangedRequest.java