@NonNull
	@Override
	public <E extends T> E await(@NonNull final E response)
			throws RequestFailedException, DeviceDisconnectedException, BluetoothDisabledException,
			InvalidRequestException, InterruptedException, CancellationException {
		assertNotMainThread();

		try {
			// Ensure the trigger request it enqueued after the callback has been set.
			if (trigger != null && trigger.enqueued) {
				throw new IllegalStateException("Trigger request already enqueued");
			}
			super.await(response);
			return response;
		} catch (final RequestFailedException e) {
			if (triggerStatus != BluetoothGatt.GATT_SUCCESS) {
				// Trigger will never have invalid request status. The outer request will.
				/*if (triggerStatus == RequestCallback.REASON_REQUEST_INVALID) {
					throw new InvalidRequestException(trigger);
				}*/
				throw new RequestFailedException(trigger, triggerStatus);
			}
			throw e;
		}
	}
Sets an optional request that is suppose to trigger the notification or indication.
This is to ensure that the characteristic value won't change before the callback was set.

@param trigger the operation that triggers the notification, usually a write characteristic
               request that write some OP CODE.
@return The request.
ble/src/main/java/no/nordicsemi/android/ble/AwaitingRequest.java