'use strict';
const isObservable = require('is-observable');
const symbolObservable = require('symbol-observable').default;

module.exports = val => {
	if (!isObservable(val)) {
		throw new TypeError('Expected an Observable');
	}

	const ret = [];

	return new Promise((resolve, reject) => {
		val[symbolObservable]().subscribe({
			next: x => {
				ret.push(x);
			},
			error: reject,
			complete: () => {
				resolve(ret);
			}
		});
	});
};