Session transaction blocks database
Ok after hours of googling, testing and hitting my head against a wall I come here for help:
Everytime I try to access some components of $conn->Session from within the websocketserver, some kind of persistent lock is placed on the database and any further connection fails.

```php
//server.php:
use Ratchet\WebSocket\WsServer;
use Ratchet\Http\HttpServer;
use Ratchet\Server\IoServer;
use Ratchet\Session\SessionProvider;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
use MyApp\Chat;

require_once 'vendor/autoload.php';

$pdo = new PDO("mysql:dbname=sessiontest;host=localhost",'testuser','testpswd');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_TIMEOUT, 3);

$server = IoServer::factory(
        new HttpServer(
            new SessionProvider(
                new WsServer(new Chat()),
                new PdoSessionHandler($pdo)
            )
        ), 8080);
$server->run();
```

```php
//client.php:
require_once 'vendor/autoload.php';

use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;

$pdo = new PDO("mysql:dbname=sessiontest;host=localhost",'testuser','testpswd');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_TIMEOUT, 3);

$sessionhandler = new PdoSessionHandler($pdo);
$storage = new NativeSessionStorage([], $sessionhandler);
$session = new Session($storage);
$session->set('foo', 'bar');
$session->set('baz', 'qux');
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>RatchetSessionTest</title>
        <script>
            console.log('trying to connect');
            let socket = new WebSocket('ws://localhost:8080');
            socket.onopen = function () {
                console.log('connected');
                this.send('Hello!');
            };
            socket.onmessage = function (msg) {
                console.log(msg.data);
            };
        </script>
    </head>
    <body>
        <p>HelloWorld</p>
    </body>
</html>
```

```php
//chat.php:
namespace MyApp;

use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;

class Chat implements MessageComponentInterface
{
    protected $clients;

    public function __construct()
    {
        $this->clients = new \SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn)
    {
        echo "New connection! ({$conn->resourceId}) from {$conn->remoteAddress}\n";
        if (isset($conn->Session) && $conn->Session instanceof SessionInterface)
        {
            echo "session data: \n";
            foreach ($conn->Session->all() as $k=>$val)
            {
                echo "\t$k:\t$val\n";
            }
        }
        $this->clients->attach($conn);
    }

    public function onMessage(ConnectionInterface $from, $msg)
    {
        $numRecv = count($this->clients) - 1;
        echo sprintf('Connection %d sending message "%s" to %d other connection%s' . "\n"
            , $from->resourceId, $msg, $numRecv, $numRecv == 1 ? '' : 's');

        foreach ($this->clients as $client) {
            if ($from !== $client) {
                // The sender is not the receiver, send to each client connected
                $client->send($msg);
            }
        }
    }

    public function onClose(ConnectionInterface $conn)
    {
        // The connection is closed, remove it, as we can no longer send it messages
        $this->clients->detach($conn);

        echo "Connection {$conn->resourceId} has disconnected\n";
    }

    public function onError(ConnectionInterface $conn, \Exception $e)
    {
        echo "An error has occurred: {$e->getMessage()}\n";

        $conn->close();
    }
}
```

I get the following output from the server:
```
New connection! (56) from 127.0.0.1
session data: 
	foo:	bar
	baz:	qux
Connection 56 sending message "Hello!" to 0 other connections
//so far as expected, after refreshing the browser window:
Connection 56 has disconnected
```
The client keeps loading and fails after the myslq transaction timeout with the following exceptions/warnings:

```
 PDOException: SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded;
Warning: session_write_close(): Cannot call session save handler in a recursive manner in Unknown on line 0
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Users\Niko\Documents\NetBeansProjects\ratchetsession\vendor\symfony\http-foundation\Session\Storage\Handler\PdoSessionHandler.php on line 283
```
It's strange to me that the errors only pop up after the max-execution time is over and not immediately. I also tried sqlite instead of mySQL with simmilar results.
Am I doing something wrong here?

environment:
```
OS: Win10 64bit
PHP: 7.4.4 
    with Zend OPcache v7.4.4
    with Xdebug v2.9.0
Ratchet: "v0.4.2"
```