To balance your points 1) and 6) somewhat I present the following little anecdote:
I was development lead on a rather complex app used to model and monitor large streaming media networks.
We were using D3.js to render large graphs of the system on the browser, and we had performance issues.
When one of the engineers suggested switching from D3.js to GraphViz (A C++ graph library) using asm.js I was like "You can't be serious!"
It turned out that GraphViz compiled to asm.js outperformed the D3.js implementation by a factor of about 2-3x. And it ran perfectly on Chrome as well.
The only thing we lost was the swishy-swoshy (and completely unimportant) animations when the graph changed.