Note: the original v1.0.2 tag somehow was deleted without being pushed. We can
not find why or how that happened, so this is being recreated by re-tagging the
same commit that was originally tagged as v1.0.2. We will not re-publish the npm
v1.0.2 package because they would be equivalent. The version bump commit for this
v1.0.2 tag will not appear in the origin/master history because origin/master has
already had other commits (what will become v1.0.3) added to it after the commit
that formed the base of v1.0.2 (25c33b0ac1e67d1fcf8117850774f4ffa58e0844). All
that is lost on master is the version bump commit itself, which will be represented
by the tag for v1.0.2, so it will not be lost entirely, it will just not be
present on origin/master.
As things turn out, the middleware constructor is called every time `setSource`
is called [1]. This was causing a new listener to get bound to
`QUALITY_SELECTED` on each change by the quality selector. :( This change makes
it so the listener is only bound on the initial creation of the player.
[1] 03529163b6/src/js/tech/middleware.js (L66)