ESP8266 Async webserver interrupting serial (canbus) communication

Hi everyone,

I've been working on a project for a while now and am running into a very unfortunate issue.

In short:
I ported my older Arduino (nano) project to an ESP8266. The program adds features to any BMW E46, such as Welcome lights when unlocking the car. The basics (receiving/sending) worked just fine, so I then decided to start from scratch and implemented all sorts of cool features to the ESP such as an async webserver, OTA (www) updates, websockets and much more.

During development the ESP was connected to a simple canbus (kbus to be exact, which is a 1 one-wire network) testbench and had been receiving messages from the older version of my code which was still running on an Arduino. Everything worked fine all this time!

But... when I finally connected the ESP to the car last weekend, the car wouldn't respond to messages.
After a lot of testing (and frustration) it turned out that the original BMW modules connected to the kbus are more sensitive to timing than the Arduino/ESP. A good example of this is the Android head unit in my car which replaced the factory radio. It responds to messages sent by the ESP just fine, i.e. it will increase/lower the volume when I press a button in the ESPs web interface.

I then decided to replace the async webserver with a regular non-async/sync webserver and the problem disappeared.
My guess is that the Async webserver is causing the interval between bits being sent over the kbus to be slightly different, resulting in the car discarding the messages. The radio and Arduino/ESP don't seem to make a big deal out of this, but the OEM BMW modules do.
The kbus communication is a 9600 baud serial network with 8bits, even parity and 1 stop bit.

My understanding of Serial communication is limited, but maybe someone here knows more about this and could maybe even suggest a solution to this so I can keep using the async webserver. It offers a lot more options and functionality and is considerably faster and easier to use.

I tried running the ESP in 160mhz mode (instead of 80mhz) hoping it would solve the problem, but unfortunately it didn't.
I also looked into pausing the async server very briefly, but wasn't able to find anything. (which makes sense..)

Any help and information regarding this is greatly appreciated.
If any specific pieces of my code are required, let me know so I can post them. (the full code is about 3000 lines)

Many thanks!

Small update regarding this issue:

It seems like disabling the built in WebSocket support solved the issue.
I'm also using XMLHTTPRequests in my project to pull real time logs from the ESP to the client browser.
I'll lower the update frequency of those functions to see if the problem returns, but for now doing XMLHTTPRequests about every 500ms doesn't seem to interrupt serial communications.