in device/index.js [853:879]
this.subscribe = function(topics, options, callback) {
if (!_filling() || autoResubscribe === false) {
_updateSubscriptionCache('subscribe', topics, options); // we do not store callback in active cache
//
// If the 3rd argument (namely callback) is not present, we will
// use two-argument form to call mqtt.Client#subscribe(), which
// supports both subscribe(topics, options) and subscribe(topics, callback).
//
if (!isUndefined(callback)) {
device.subscribe(topics, options, callback);
} else {
device.subscribe(topics, options);
}
} else {
// we're offline - queue this subscription request
if (offlineSubscriptionQueue.length < offlineSubscriptionQueueMaxSize) {
offlineSubscriptionQueue.push({
type: 'subscribe',
topics: topics,
options: options,
callback: callback
});
} else {
that.emit('error', new Error('Maximum queued offline subscription reached'));
}
}
};