| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- 'use strict';
 
- var name = require('fn.name');
 
- /**
 
-  * Wrap callbacks to prevent double execution.
 
-  *
 
-  * @param {Function} fn Function that should only be called once.
 
-  * @returns {Function} A async wrapped callback which prevents multiple executions.
 
-  * @public
 
-  */
 
- module.exports = function one(fn) {
 
-   var called = 0
 
-     , value;
 
-   /**
 
-    * The function that prevents double execution.
 
-    *
 
-    * @async
 
-    * @public
 
-    */
 
-   async function onetime() {
 
-     if (called) return value;
 
-     called = 1;
 
-     value = await fn.apply(this, arguments);
 
-     fn = null;
 
-     return value;
 
-   }
 
-   //
 
-   // To make debugging more easy we want to use the name of the supplied
 
-   // function. So when you look at the functions that are assigned to event
 
-   // listeners you don't see a load of `onetime` functions but actually the
 
-   // names of the functions that this module will call.
 
-   //
 
-   // NOTE: We cannot override the `name` property, as that is `readOnly`
 
-   // property, so displayName will have to do.
 
-   //
 
-   onetime.displayName = name(fn);
 
-   return onetime;
 
- };
 
 
  |