Concurrent JavaScript — A year’s absence

If you don’t know what Nexus.js is, please start reading here:


I almost dropped this project altogether.

The only reason why I didn’t, was all the support I received after my talk at Nordic.js 2016. I’ll always remember those days fondly, the team was amazing and the audience was supportive. I was honestly shocked when no one booed at me after my embarrassing instance of stage fright. If you’re interested in the talk, here it is:

I think it’s time to come clean about something, though. Some of what I’m about to write here is personal. I hope you don’t mind.

While in Sweden, I ate something or the other right before the talk, which triggered a severe allergic reaction all over my body, and I instantly started foaming at the mouth and (as I soon discovered) bleeding from the digestive tract.

I was completely demoralised at the time, and I dared not tell a soul. I think I hid it well. But walking on stage to talk in front of thousands while bleeding from your nethers will completely and utterly demoralise you.

During the past year I have been struggling with the same issue, and wrongly assuming it was the result of cancer.

I did not visit a doctor for fear of alerting my family to the condition (or to be brutally honest, just the fear of finding out). I didn’t even tell my best friend (or my brother) until much later.

So when my brother was diagnosed with Gluten intolerance, and on a hunch I quit eating wheat, I was finally relieved for the first time in a very long and depressive year.

Ever since I quit eating Gluten, it all stopped and I’m back to normal. Even better than my original ‘normal’ had been. I’m much healthier and I’m no longer sleeping 12 hours a day.

But the past is in the past. I think I’m now in a better place — both physically and mentally — to pursue my dreams.

During the year I was struggling to work on a web app my co-founders and I were trying to launch, hence I was (and still am) heavily invested in the development of an open source CMS for use in our project.

I’m still working on that, but I’ve also decided to work on Nexus.js seriously during my spare time.

So, what’s new?

I just landed a very big commit on GitHub, which adds support for ES6 modules to the engine! Nexus now integrates with JavaScriptCore on a fundamental level.

ES6 Module Support

In addition, WebKit has progressed a long way since last year, now it supports the async/await pattern out of the box.

Promise-based EventEmitter

Streams and devices are as fast as ever, with 800MB of output converted from UTF8 to UTF16-LE in 564 milliseconds (fractionally longer than my last test, but then again I’m on a different system):

Streaming and devices

And now, standing on the precipice, I’m about to finish implementing HTTP(S) and Websockets (using beast, which I just migrated to) and then I plan on working on HTTP2.

Any Questions?

Do you have any questions? I would be happy to answer them. Send them here in the comments or to @voodooattack on Twitter, and as always: you can review the code for the project on GitHub.

This is the end of this series, but fear not! There’s always a new beginning! Read the new series below!

Continue reading on There we will touch on everything that’s been implemented so far, and benchmark HTTP request performance using chunked encoding! (spoiler: we break records!)