resource-lock.js 430 B

12345678910111213141516171819202122232425
  1. 'use strict';
  2. const Promise = require('../../promise');
  3. class ResourceLock {
  4. constructor(resource) {
  5. this.resource = resource;
  6. this.previous = Promise.resolve(resource);
  7. }
  8. unwrap() {
  9. return this.resource;
  10. }
  11. lock() {
  12. const lock = this.previous;
  13. let resolve;
  14. this.previous = new Promise(r => {
  15. resolve = r;
  16. });
  17. return lock.disposer(resolve);
  18. }
  19. }
  20. module.exports = ResourceLock;