Snapshot. Lots of changes. Using ES6 promises; added "force new connection" option.