21 lines
		
	
	
		
			344 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			344 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
module.exports = thunkyp
 | 
						|
 | 
						|
function thunkyp (fn) {
 | 
						|
  let running = null
 | 
						|
 | 
						|
  return ready
 | 
						|
 | 
						|
  function ready () {
 | 
						|
    if (running) return running
 | 
						|
    const p = fn()
 | 
						|
    if (!(p instanceof Promise)) running = Promise.resolve(p)
 | 
						|
    else running = p
 | 
						|
    running.catch(onerror)
 | 
						|
    return running
 | 
						|
  }
 | 
						|
 | 
						|
  function onerror () {
 | 
						|
    running = null
 | 
						|
  }
 | 
						|
}
 |