/** * Find a query and returns a cursor * @returns {Disposer<Cursor>} A promise to be used with Promise.using */ find( query ) { const self = this; const promise = new Promise(function( resolve ) { resolve( self._collection.find( query ) ); }); return promise.disposer(function( cursor ) { return cursor.close(); }); }
function ssh(params, with_disposer) { var prom = new Promise(function(resolve, reject) { var conn = new ssh2(); conn.on('ready', function() { resolve(_decorate(conn)); }); conn.on('error', function(err) { reject(err); }); conn.connect.call(conn, params); }); if (with_disposer) { return prom.disposer(function(connection) { connection.end(); }); } else { return prom; } }
FsMetastore.prototype.lock = function lock(userId, shared) { var promise = new Promise(function(resolve, reject) { var locker = this._lockMap[userId]; if (!locker) { var filePath; if (this._isSingleUser) { filePath = nodePath.join(this._options.configParams.get('orion.single.user.metaLocation') || os.homedir(), '.orion'); } else { filePath = this._computeLockFilePath(userId); } filePath = nodePath.join(filePath, ".lock"); locker = new fileLocker(filePath, this._options); this._lockMap[userId] = locker; } locker.lock(shared).then(resolve, reject); }.bind(this)); return promise.disposer(function(releaser) { return releaser(); }); };