code: function read(cb) {
  				if (callback) throw new Error("already getting");
  				if (q.length > 0) {
  						var item = q.shift();
  						// recycle queue when empty to avoid maintaining arrays that have grown large and shrunk
  						if (q.length === 0) q = [];
  						exports.setImmediate(function () {
  							cb(err, item);
  						});
  						if (pendingWrites.length > 0) {
  								var wr = pendingWrites.shift();
  								exports.setImmediate(function () {
  									wr[0](err, wr[1]);
  								});
  							}
  					} else {
  						callback = cb;
  					}
  			}
docs: /   `data = q.read(_)`: dequeues an item from the queue. Waits if no element is available.