| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | 
							- /* @flow */
 
- const MAX_STACK_DEPTH = 800
 
- const noop = _ => _
 
- const defer = typeof process !== 'undefined' && process.nextTick
 
-   ? process.nextTick
 
-   : typeof Promise !== 'undefined'
 
-     ? fn => Promise.resolve().then(fn)
 
-     : typeof setTimeout !== 'undefined'
 
-       ? setTimeout
 
-       : noop
 
- if (defer === noop) {
 
-   throw new Error(
 
-     'Your JavaScript runtime does not support any asynchronous primitives ' +
 
-     'that are required by vue-server-renderer. Please use a polyfill for ' +
 
-     'either Promise or setTimeout.'
 
-   )
 
- }
 
- export function createWriteFunction (
 
-   write: (text: string, next: Function) => boolean,
 
-   onError: Function
 
- ): Function {
 
-   let stackDepth = 0
 
-   const cachedWrite = (text, next) => {
 
-     if (text && cachedWrite.caching) {
 
-       cachedWrite.cacheBuffer[cachedWrite.cacheBuffer.length - 1] += text
 
-     }
 
-     const waitForNext = write(text, next)
 
-     if (waitForNext !== true) {
 
-       if (stackDepth >= MAX_STACK_DEPTH) {
 
-         defer(() => {
 
-           try { next() } catch (e) {
 
-             onError(e)
 
-           }
 
-         })
 
-       } else {
 
-         stackDepth++
 
-         next()
 
-         stackDepth--
 
-       }
 
-     }
 
-   }
 
-   cachedWrite.caching = false
 
-   cachedWrite.cacheBuffer = []
 
-   cachedWrite.componentBuffer = []
 
-   return cachedWrite
 
- }
 
 
  |