code: function(callback) {
        var t = this,
            reason = 'manual_disconnect',
            startTime = Date.now(),
            probeId = t.get('probeId');
  
        // Stop forwarding changes to the probe
        t.off('change', t.onChange, t);
  
        // Disconnect from the router
        Monitor.getRouter().disconnectMonitor(t, reason, function(error, reason) {
          if (callback) {callback(error);}
          if (error) {
            log.error('disconnect', {error: error});
          }
          else {
            t.trigger('disconnect', reason);
            log.info('disconnected', {reason: reason, probeId: probeId});
            stat.time('disconnect', Date.now() - startTime);
          }
        });
      }
docs: Disconnect from the remote probe
  
  This should be called when the monitor is no longer needed.
  It releases resources associated with monitoring the probe.
  
  If this was the last object monitoring the probe, the probe will be
  stopped, releasing resources associated with running the probe.
  
  @method disconnect
  @param callback {Function(error)} Called when disconnected (or error)
   
  The monitor has disconnected from the probe
  @event disconnect
  @param reason {String} Reason specified for the disconnect
  <ul>Known Reasons:
  <li>manual_disconnect - A manual call to disconnect() was made.</li>
  <li>connect_failed - Underlying transport connection problem.</li>
  <li>remote_disconnect - Underlying transport disconnected.</li>
  </ul>