Repository: quarkusio/quarkus
Issue: Redis client throw null exception on get

**Describe the bug**
(Describe the problem clearly and concisely.)

Getting null pointer exception when key not exists with following code:
```
@Path("/testing")
class TestController {
    @Inject
    lateinit var redisClient: RedisClient

    @GET
    @Path("/test1")
    fun test1(): String {
        redisClient.get("testing") // this is throwing null pointer exception
        return "Testing"
    }
}
```
```
at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:106)
	at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:372)
	at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:216)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:515)
	at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:259)
	at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:160)
	at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
	at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:163)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:245)
	at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
	at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:132)
	at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.access$000(VertxRequestHandler.java:37)
	at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:94)
	at io.quarkus.runtime.CleanableExecutor$CleaningRunnable.run(CleanableExecutor.java:231)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
	at java.base/java.lang.Thread.run(Thread.java:834)
	at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: java.lang.NullPointerException
Caused by: java.lang.NullPointerException

	at io.quarkus.redis.client.runtime.RedisClientImpl.await(RedisClientImpl.java:1026)
	at io.quarkus.redis.client.runtime.RedisClientImpl.get(RedisClientImpl.java:237)
```

**Expected behavior**
(Describe the expected behavior clearly and concisely.)

**Actual behavior**
(Describe the actual behavior clearly and concisely.)


**To Reproduce**
Steps to reproduce the behavior:
1. above code provided

**Configuration**
```properties
# Add your application.properties here, if applicable.

```

**Screenshots**
(If applicable, add screenshots to help explain your problem.)

**Environment (please complete the following information):**
 - Output of `uname -a` or `ver`: 

`Darwin sabeehs-mbp.home 19.6.0 Darwin Kernel Version 19.6.0: Sun Jul  5 00:43:10 PDT 2020; root:xnu-6153.141.1~9/RELEASE_X86_64 x86_64`

 - Output of `java -version`: 
```
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
```
 - GraalVM version (if different from Java): 
 - Quarkus version or git rev: 
`1.7.0.Final`
 - Build tool (ie. output of `mvnw --version` or `gradlew --version`): 

```
Gradle 6.3
------------------------------------------------------------

Build time:   2020-03-24 19:52:07 UTC
Revision:     bacd40b727b0130eeac8855ae3f9fd9a0b207c60

Kotlin:       1.3.70
Groovy:       2.5.10
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          11.0.2 (Oracle Corporation 11.0.2+9)
OS:           Mac OS X 10.15.6 x86_64

```

**Additional context**
(Add any other context about the problem here.)


Changed files:
integration-tests/redis-client/src/main/java/io/quarkus/redis/it/RedisResource.java
integration-tests/redis-client/src/test/java/io/quarkus/redis/it/QuarkusRedisTest.java
extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/RedisClientImpl.java

diff --git a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/RedisClientImpl.java b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/RedisClientImpl.java
index bb1f119610f..e0ef01b0bae 100644
--- a/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/RedisClientImpl.java
+++ b/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/client/runtime/RedisClientImpl.java
@@ -1023,6 +1023,10 @@ public Response zunionstore(List<String> args) {
     }
 
     private Response await(Uni<io.vertx.mutiny.redis.client.Response> mutinyResponse) {
-        return mutinyResponse.await().atMost(Duration.ofSeconds(timeout)).getDelegate();
+        io.vertx.mutiny.redis.client.Response response = mutinyResponse.await().atMost(Duration.ofSeconds(timeout));
+        if (response == null) {
+            return null;
+        }
+        return response.getDelegate();
     }
 }
diff --git a/integration-tests/redis-client/src/main/java/io/quarkus/redis/it/RedisResource.java b/integration-tests/redis-client/src/main/java/io/quarkus/redis/it/RedisResource.java
index e59101e6ae2..0a4e0221110 100644
--- a/integration-tests/redis-client/src/main/java/io/quarkus/redis/it/RedisResource.java
+++ b/integration-tests/redis-client/src/main/java/io/quarkus/redis/it/RedisResource.java
@@ -12,6 +12,7 @@
 import io.quarkus.redis.client.RedisClient;
 import io.quarkus.redis.client.reactive.ReactiveRedisClient;
 import io.smallrye.mutiny.Uni;
+import io.vertx.redis.client.Response;
 
 @Path("/quarkus-redis")
 @ApplicationScoped
@@ -26,7 +27,8 @@ public class RedisResource {
     @GET
     @Path("/sync/{key}")
     public String getSync(@PathParam("key") String key) {
-        return redisClient.get(key).toString();
+        Response response = redisClient.get(key);
+        return response == null ? null : response.toString();
     }
 
     @POST
@@ -41,7 +43,7 @@ public void setSync(@PathParam("key") String key, String value) {
     public Uni<String> getReactive(@PathParam("key") String key) {
         return reactiveRedisClient
                 .get(key)
-                .map(response -> response.toString());
+                .map(response -> response == null ? null : response.toString());
     }
 
     @POST
diff --git a/integration-tests/redis-client/src/test/java/io/quarkus/redis/it/QuarkusRedisTest.java b/integration-tests/redis-client/src/test/java/io/quarkus/redis/it/QuarkusRedisTest.java
index 2c407bab66b..c04cec305f0 100644
--- a/integration-tests/redis-client/src/test/java/io/quarkus/redis/it/QuarkusRedisTest.java
+++ b/integration-tests/redis-client/src/test/java/io/quarkus/redis/it/QuarkusRedisTest.java
@@ -16,6 +16,12 @@ class QuarkusRedisTest {
 
     @Test
     public void sync() {
+        RestAssured.given()
+                .when()
+                .get("/quarkus-redis/sync/" + SYNC_KEY)
+                .then()
+                .statusCode(204); // the key is not set yet
+
         RestAssured.given()
                 .body(SYNC_VALUE)
                 .when()
@@ -33,6 +39,12 @@ public void sync() {
 
     @Test
     public void reactive() {
+        RestAssured.given()
+                .when()
+                .get("/quarkus-redis/reactive/" + REACTIVE_KEY)
+                .then()
+                .statusCode(204); // the reactive key is not set yet
+
         RestAssured.given()
                 .body(REACTIVE_VALUE)
                 .when()