I had a good experience with Howler.js v1 a few years ago and built a library that joined musical pieces together in semi-random order for a game. The system is still running on eyewire.org today.
I haven't studied v2's differences in depth, but in v1 I made a few customizations to add timers, chained cross fades, smooth muting, and perceptual volume control (i.e. takes into account the logarithmic response of hearing).