diff --git a/src/DatabaseConnectionPoolConfiguration.php b/src/DatabaseConnectionPoolConfiguration.php
index 1681fab6da68cca735e740b40819c39f7ca6275b..586a22a67d00e59da411881f59e2df4b5286ef1e 100644
--- a/src/DatabaseConnectionPoolConfiguration.php
+++ b/src/DatabaseConnectionPoolConfiguration.php
@@ -20,6 +20,8 @@ readonly class DatabaseConnectionPoolConfiguration
         #[SensitiveParameter]
         public string $password,
         #[SensitiveParameter]
+        public bool $poolPrefill,
+        #[SensitiveParameter]
         public int $poolSize,
         #[SensitiveParameter]
         public int $port,
diff --git a/src/DependencyInjectionContainer.php b/src/DependencyInjectionContainer.php
index 06550b49c196e48563431ec3ab293492983fff72..94ff613281e783223270881e46a8724e92606f32 100644
--- a/src/DependencyInjectionContainer.php
+++ b/src/DependencyInjectionContainer.php
@@ -13,6 +13,7 @@ use ReflectionClass;
 use ReflectionFunction;
 use RuntimeException;
 use Swoole\Coroutine\WaitGroup;
+use Throwable;
 
 use function Swoole\Coroutine\run;
 
@@ -260,10 +261,17 @@ readonly class DependencyInjectionContainer
             return $this->singletons->get($className);
         }
 
-        $singleton = $this->doMakeSingleton($className, $previous);
+        try {
+            $singleton = $this->doMakeSingleton($className, $previous);
 
-        $this->singletons->set($className, $singleton);
+            $this->singletons->set($className, $singleton);
 
-        return $singleton;
+            return $singleton;
+        } catch (Throwable $throwable) {
+            throw new LogicException(
+                message: 'Error while building: '.$className,
+                previous: $throwable,
+            );
+        }
     }
 }
diff --git a/src/RedisConnectionPoolConfiguration.php b/src/RedisConnectionPoolConfiguration.php
index 3e56da1af42c835a4e81924b8f16f50bcb9cd9dd..ff9f65ddc7a0b27d7cb7ee6eb8cbfbbdea47ccad 100644
--- a/src/RedisConnectionPoolConfiguration.php
+++ b/src/RedisConnectionPoolConfiguration.php
@@ -16,6 +16,8 @@ readonly class RedisConnectionPoolConfiguration
         #[SensitiveParameter]
         public string $password,
         #[SensitiveParameter]
+        public bool $poolPrefill,
+        #[SensitiveParameter]
         public int $poolSize,
         #[SensitiveParameter]
         public int $port,
diff --git a/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php
index 6312452cf71aade059a3a87d38d4d729212c8dbb..aeacb6333ac5f17b075143a080de91958c4eba3b 100644
--- a/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php
@@ -20,6 +20,7 @@ use Nette\Schema\Schema;
  *         host: string,
  *         log_queries: bool,
  *         password: string,
+ *         pool_prefill: bool,
  *         pool_size: int,
  *         port: int,
  *         username: string,
@@ -44,6 +45,7 @@ final readonly class DatabaseConfigurationProvider extends ConfigurationProvider
             'host' => Expect::string()->min(1)->required(),
             'log_queries' => Expect::bool()->required(),
             'password' => Expect::string()->required(),
+            'pool_prefill' => Expect::bool()->required(),
             'pool_size' => Expect::int()->min(1)->required(),
             'port' => Expect::int()->min(1)->max(65535)->required(),
             'username' => Expect::string()->min(1)->required(),
@@ -65,6 +67,7 @@ final readonly class DatabaseConfigurationProvider extends ConfigurationProvider
                     host: $connectionPoolConfiguration->host,
                     logQueries: $connectionPoolConfiguration->log_queries,
                     password: $connectionPoolConfiguration->password,
+                    poolPrefill: $connectionPoolConfiguration->pool_prefill,
                     poolSize: $connectionPoolConfiguration->pool_size,
                     port: $connectionPoolConfiguration->port,
                     username: $connectionPoolConfiguration->username,
diff --git a/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php
index 3f202034046a0e9fa6727b779924fbba8377a70d..950377e237fabd559d3ad6e2813cd676c06feb71 100644
--- a/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php
@@ -18,6 +18,7 @@ use Nette\Schema\Schema;
  *         db_index: int,
  *         host: string,
  *         password: string,
+ *         pool_prefill: bool,
  *         pool_size: int,
  *         port: int,
  *         prefix: string,
@@ -41,6 +42,7 @@ final readonly class RedisConfigurationProvider extends ConfigurationProvider
             'db_index' => Expect::int()->min(0)->required(),
             'host' => Expect::string()->min(1)->required(),
             'password' => Expect::string()->required(),
+            'pool_prefill' => Expect::bool()->required(),
             'pool_size' => Expect::int()->min(1)->required(),
             'port' => Expect::int()->min(1)->max(65535)->required(),
             'prefix' => Expect::string()->min(1)->required(),
@@ -61,6 +63,7 @@ final readonly class RedisConfigurationProvider extends ConfigurationProvider
                     dbIndex: $connectionPoolConfiguration->db_index,
                     host: $connectionPoolConfiguration->host,
                     password: $connectionPoolConfiguration->password,
+                    poolPrefill: $connectionPoolConfiguration->pool_prefill,
                     poolSize: $connectionPoolConfiguration->pool_size,
                     port: $connectionPoolConfiguration->port,
                     prefix: $connectionPoolConfiguration->prefix,
diff --git a/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php b/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php
index ee16d39ec8930dcc3fa738d12f88ba381849edd5..67c47947e3fe43d29411bfc4a91299fa08ba3952 100644
--- a/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php
+++ b/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php
@@ -48,7 +48,10 @@ final readonly class DatabaseConnectionPoolRepositoryProvider extends SingletonP
             ;
 
             $pdoPool = new PDOPool($pdoConfig, $connectionPoolConfiguration->poolSize);
-            $pdoPool->fill();
+
+            if ($connectionPoolConfiguration->poolPrefill) {
+                $pdoPool->fill();
+            }
 
             $databaseConnectionPoolRepository->databaseConnectionPool->put($name, $pdoPool);
         }
diff --git a/src/SingletonProvider/RedisConnectionPoolRepositoryProvider.php b/src/SingletonProvider/RedisConnectionPoolRepositoryProvider.php
index 7e494f5a457665794bc043d598389dc663802999..741f99996e787c0fb37a8da26b66b2fa3c08d0bc 100644
--- a/src/SingletonProvider/RedisConnectionPoolRepositoryProvider.php
+++ b/src/SingletonProvider/RedisConnectionPoolRepositoryProvider.php
@@ -39,7 +39,10 @@ final readonly class RedisConnectionPoolRepositoryProvider extends SingletonProv
             ;
 
             $redisPool = new RedisPool($redisConfig, $connectionPoolConfiguration->poolSize);
-            $redisPool->fill();
+
+            if ($connectionPoolConfiguration->poolPrefill) {
+                $redisPool->fill();
+            }
 
             $redisConnectionPoolRepository->redisConnectionPool->put($name, $redisPool);
         }