There is a bug in the node bindings of the libmongocrypt page: libmongocrypt/mongocryptdManager.js at 8530af06643daa28259e5830ce1dff22b6be326a · mongodb/libmongocrypt · GitHub
The spawning function does not wait until the process is up, it merely waits until the spawning of the process has been handed off by Node to the OS land. At least to my understanding of how the node event queue works. This can create a race condition where the driver tries to connect to the cluster while the mongocryptd process is not ready to accept connections yet. In my case it sometimes did, sometimes not.
I detailed a fix in the article above (at the very bottom), but it is not pretty and I would love to hear from the devs.