diff --git a/redisson/src/main/java/org/redisson/client/RedisClient.java b/redisson/src/main/java/org/redisson/client/RedisClient.java
index b03c92c8e..44e9f6b37 100644
--- a/redisson/src/main/java/org/redisson/client/RedisClient.java
+++ b/redisson/src/main/java/org/redisson/client/RedisClient.java
@@ -186,7 +186,7 @@ public final class RedisClient {
         Future<InetSocketAddress> resolveFuture = resolver.resolve(InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort()));
         resolveFuture.addListener((FutureListener<InetSocketAddress>) future -> {
             if (!future.isSuccess()) {
-                promise.completeExceptionally(future.cause());
+                promise.completeExceptionally(new RedisConnectionException(future.cause()));
                 return;
             }
 
@@ -207,7 +207,7 @@ public final class RedisClient {
                 @Override
                 public void operationComplete(final ChannelFuture future) throws Exception {
                     if (bootstrap.config().group().isShuttingDown()) {
-                        IllegalStateException cause = new IllegalStateException("RedisClient is shutdown");
+                        RedisConnectionException cause = new RedisConnectionException("RedisClient is shutdown");
                         r.completeExceptionally(cause);
                         return;
                     }
@@ -264,7 +264,7 @@ public final class RedisClient {
                 @Override
                 public void operationComplete(final ChannelFuture future) throws Exception {
                     if (bootstrap.config().group().isShuttingDown()) {
-                        IllegalStateException cause = new IllegalStateException("RedisClient is shutdown");
+                        RedisConnectionException cause = new RedisConnectionException("RedisClient is shutdown");
                         r.completeExceptionally(cause);
                         return;
                     }
diff --git a/redisson/src/main/java/org/redisson/client/RedisConnectionException.java b/redisson/src/main/java/org/redisson/client/RedisConnectionException.java
index 6c5302b88..7f582ca58 100644
--- a/redisson/src/main/java/org/redisson/client/RedisConnectionException.java
+++ b/redisson/src/main/java/org/redisson/client/RedisConnectionException.java
@@ -24,6 +24,10 @@ public class RedisConnectionException extends RedisException {
 
     private static final long serialVersionUID = -4756928186967834601L;
 
+    public RedisConnectionException(Throwable cause) {
+        super(cause);
+    }
+
     public RedisConnectionException(String msg) {
         super(msg);
     }
diff --git a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java
index 89ccb4189..5f5d836df 100644
--- a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java
+++ b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java
@@ -339,7 +339,10 @@ public class MasterSlaveConnectionManager implements ConnectionManager {
         } catch (Exception e) {
             stopThreads();
             if (e instanceof CompletionException) {
-                throw (RuntimeException) e.getCause();
+                if (e.getCause() instanceof RuntimeException) {
+                    throw (RuntimeException) e.getCause();
+                }
+                throw new RedisConnectionException(e.getCause());
             }
             throw e;
         }
diff --git a/redisson/src/test/java/org/redisson/RedissonTest.java b/redisson/src/test/java/org/redisson/RedissonTest.java
index 9e0fbb9ee..3d0ddf1d2 100644
--- a/redisson/src/test/java/org/redisson/RedissonTest.java
+++ b/redisson/src/test/java/org/redisson/RedissonTest.java
@@ -1140,6 +1140,19 @@ public class RedissonTest extends BaseTest {
         });
     }
 
+    @Test
+    public void testMasterSlaveConnectionFail2() {
+        Assertions.assertThrows(RedisConnectionException.class, () -> {
+            Config config = new Config();
+            config.useMasterSlaveServers()
+                    .setMasterAddress("redis://gadfgdfgdsfg:1111")
+                    .addSlaveAddress("redis://asdfasdfsdfaasdf:1111");
+            Redisson.create(config);
+
+            Thread.sleep(1500);
+        });
+    }
+
     @Test
     public void testSentinelConnectionFail() {
         Assertions.assertThrows(RedisConnectionException.class, () -> {