"use strict"; module.exports = function createResultBuffer() { let buffer = []; return { push: function (item) { // NOTE: item should always be a Promise, either resolved or rejected! Use Promise.resolve or Promise.reject to wrap an item if necessary // FIXME: Actually validate this buffer.push(item); }, maybeRead: function (readCallback) { if (buffer.length > 0) { return buffer.shift(); } else { return readCallback(); } } }; };