public final void await() throws RequestFailedException, DeviceDisconnectedException,
			BluetoothDisabledException, InvalidRequestException, InterruptedException {
		assertNotMainThread();

		if (cancelled) {
			throw new CancellationException();
		}
		if (finished || enqueued) {
			throw new IllegalStateException();
		}
		final SuccessCallback sc = successCallback;
		final FailCallback fc = failCallback;
		try {
			syncLock.close();
			final RequestCallback callback = new RequestCallback();
			done(callback).fail(callback).invalid(callback).enqueue();

			if (!syncLock.block(timeout)) {
				throw new InterruptedException();
			}
			if (!callback.isSuccess()) {
				if (callback.status == FailCallback.REASON_CANCELLED) {
					throw new CancellationException();
				}
				if (callback.status == FailCallback.REASON_DEVICE_DISCONNECTED) {
					throw new DeviceDisconnectedException();
				}
				if (callback.status == FailCallback.REASON_BLUETOOTH_DISABLED) {
					throw new BluetoothDisabledException();
				}
				if (callback.status == RequestCallback.REASON_REQUEST_INVALID) {
					throw new InvalidRequestException(this);
				}
				throw new RequestFailedException(this, callback.status);
			}
		} finally {
			successCallback = sc;
			failCallback = fc;
		}
	}
Synchronously waits until the request is done.
<p>
Use {@link #timeout(long)} to set the maximum time the manager should wait until the request
is ready. When the timeout occurs, the {@link InterruptedException} will be thrown.
<p>
Callbacks set using {@link #done(SuccessCallback)} and {@link #fail(FailCallback)}
will be ignored.
<p>
This method may not be called from the main (UI) thread.

@throws RequestFailedException      thrown when the BLE request finished with status other
                                    than {@link BluetoothGatt#GATT_SUCCESS}.
@throws InterruptedException        thrown if the timeout occurred before the request has
                                    finished.
@throws CancellationException       thrown when the request has been cancelled.
@throws IllegalStateException       thrown when you try to call this method from the main
                                    (UI) thread.
@throws DeviceDisconnectedException thrown when the device disconnected before the request
                                    was completed.
@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).
@see #enqueue()
ble/src/main/java/no/nordicsemi/android/ble/TimeoutableRequest.java