code: function(key, value, lifetime, callback) {
            if (arguments.length === 2) {
              lifetime = 0;
              return Promise.promisify(body)();
            } else if (arguments.length === 3) {
              if (typeof (lifetime) === 'function') {
                callback = lifetime;
                lifetime = 0;
                return body(callback);
              } else {
                return Promise.promisify(body)();
              }
            } else {
              return body(callback);
            }
            function body(callback) {
              var action = {};
              var set = {
                name: name,
                key: key,
                value: value
              };
              action.$set = set;
              var unset = {};
              if (lifetime) {
                set.expires = new Date(new Date().getTime() + lifetime * 1000);
              } else {
                unset.expires = 1;
                action.$unset = unset;
              }
              return self.cacheCollection.update(
                {
                  name: name,
                  key: key
                },
                action,
                {
                  upsert: true
                }, callback
              );
            }
          }
docs: Store an item in the cache. `value` may be any JSON-friendly value, including an object. `lifetime` is in seconds.  The callback receives (err).  You may also call with just three arguments: key, value, callback. In that case there is no hard limit on the lifetime, however NEVER use a cache for PERMANENT storage of data. It might be cleared at any time.  If there is no callback a promise is returned.