function tryDispose<T> (time: number, disposable: Disposable<T>, sink: Sink<T>) { try { disposable.dispose() } catch (e) { sink.error(time, e) } }
disposables.forEach((disposable: Disposable<T>) => { disposable.dispose() })
dispose() { this.active = false this.disposable.dispose() }