diff --git a/src/combinator/limit.js b/src/combinator/limit.js index b2e2e040..1e94e352 100644 --- a/src/combinator/limit.js +++ b/src/combinator/limit.js @@ -4,7 +4,6 @@ import Stream from '../Stream' import Pipe from '../sink/Pipe' -import * as dispose from '../disposable/dispose' import PropagateTask from '../scheduler/PropagateTask' import Map from '../fusion/Map' @@ -84,9 +83,7 @@ function DebounceSink (dt, source, sink, scheduler) { this.scheduler = scheduler this.value = void 0 this.timer = null - - var sourceDisposable = source.run(this, scheduler) - this.disposable = dispose.all([this, sourceDisposable]) + this.disposable = source.run(this, scheduler) } DebounceSink.prototype.event = function (t, x) { @@ -110,6 +107,7 @@ DebounceSink.prototype.error = function (t, x) { DebounceSink.prototype.dispose = function () { this._clearTimer() + return this.disposable.dispose() } DebounceSink.prototype._clearTimer = function () { diff --git a/test/limit-test.js b/test/limit-test.js index ebc47977..e5b3700c 100644 --- a/test/limit-test.js +++ b/test/limit-test.js @@ -10,6 +10,9 @@ var take = require('../src/combinator/slice').take var fromArray = require('../src/source/fromArray').fromArray var core = require('../src/source/core') var Map = require('../src/fusion/Map').default +var drain = require('../src/combinator/observe').drain +var Stream = require('../src/Stream').default +var FakeDisposeSource = require('./helper/FakeDisposeSource') var empty = core.empty var streamOf = core.of @@ -95,6 +98,16 @@ describe('debounce', function () { ]) }) }) + + it('should dispose', function () { + var dispose = this.spy() + var s = new Stream(new FakeDisposeSource(dispose, streamOf(sentinel).source)) + var debounced = limit.debounce(1, s) + + return drain(debounced).then(function () { + expect(dispose).toHaveBeenCalledOnce() + }) + }) }) describe('throttle', function () {