These extension points may be used by another adapter, in order to open
or close a connection to a database for example.
In Socket.IO v2, the join() method did accept a callback:
```js
socket.join("room1", () => {
io.to("room1").emit("hello");
});
```
Depending on the adapter, it may now return a promise:
```js
await socket.join("room1");
io.to("room1").emit("hello");
```
Related: https://github.com/socketio/socket.io/issues/3662