code: function(zoom, refPoint, immediately) {
          var _this = this;
  
          this.zoomPoint = refPoint instanceof $.Point &&
              !isNaN(refPoint.x) &&
              !isNaN(refPoint.y) ?
              refPoint :
              null;
  
          if (immediately) {
              this._adjustCenterSpringsForZoomPoint(function() {
                  _this.zoomSpring.resetTo(zoom);
              });
          } else {
              this.zoomSpring.springTo(zoom);
          }
  
          if (this.viewer) {
              /**
               * Raised when the viewport zoom level changes (see {@link OpenSeadragon.Viewport#zoomBy} and {@link OpenSeadragon.Viewport#zoomTo}).
               *
               * @event zoom
               * @memberof OpenSeadragon.Viewer
               * @type {object}
               * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event.
               * @property {Number} zoom
               * @property {OpenSeadragon.Point} refPoint
               * @property {Boolean} immediately
               * @property {?Object} userData - Arbitrary subscriber-defined object.
               */
              this.viewer.raiseEvent('zoom', {
                  zoom: zoom,
                  refPoint: refPoint,
                  immediately: immediately
              });
          }
  
          return this;
      }
docs: Zooms to the specified zoom level
  @function
  @param {Number} zoom The zoom level to zoom to.
  @param {OpenSeadragon.Point} [refPoint] The point which will stay at
  the same screen location. Defaults to the viewport center.
  @param {Boolean} [immediately=false]
  @return {OpenSeadragon.Viewport} Chainable.
  @fires OpenSeadragon.Viewer.event:zoom