"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Observable_1 = require("../Observable"); var from_1 = require("./from"); var empty_1 = require("./empty"); function using(resourceFactory, observableFactory) { return new Observable_1.Observable(function (subscriber) { var resource; try { resource = resourceFactory(); } catch (err) { subscriber.error(err); return undefined; } var result; try { result = observableFactory(resource); } catch (err) { subscriber.error(err); return undefined; } var source = result ? from_1.from(result) : empty_1.EMPTY; var subscription = source.subscribe(subscriber); return function () { subscription.unsubscribe(); if (resource) { resource.unsubscribe(); } }; }); } exports.using = using; //# sourceMappingURL=using.js.map