UNPKG

response-iterator

Version:

Creates an async iterator for a variety of inputs in the browser and node. Supports fetch, node-fetch, and cross-fetch

28 lines (27 loc) 816 B
const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator; /* c8 ignore start */ export default function promiseIterator(promise) { let resolved = false; const iterator = { next () { if (resolved) return Promise.resolve({ value: undefined, done: true }); resolved = true; return new Promise((resolve, reject)=>{ promise.then((value)=>{ resolve({ value, done: false }); }).catch(reject); }); } }; if (hasIterator) { iterator[Symbol.asyncIterator] = function() { return this; }; } return iterator; } /* c8 ignore stop */