| 
						 | 
						- var readline = require('readline')
 - var Promise = require('any-promise')
 - var objectAssign = require('object-assign')
 - var Interface = readline.Interface
 - 
 - function wrapCompleter (completer) {
 -   if (completer.length === 2) return completer
 - 
 -   return function (line, cb) {
 -     var result = completer(line)
 - 
 -     if (typeof result.then !== 'function') {
 -       return cb(null, result)
 -     }
 - 
 -     result.catch(cb).then(function (result) {
 -       process.nextTick(function () { cb(null, result) })
 -     })
 -   }
 - }
 - 
 - function InterfaceAsPromised (input, output, completer, terminal) {
 -   if (arguments.length === 1) {
 -     var options = input
 - 
 -     if (typeof options.completer === 'function') {
 -       options = objectAssign({}, options, {
 -         completer: wrapCompleter(options.completer)
 -       })
 -     }
 - 
 -     Interface.call(this, options)
 -   } else {
 -     if (typeof completer === 'function') {
 -       completer = wrapCompleter(completer)
 -     }
 - 
 -     Interface.call(this, input, output, completer, terminal)
 -   }
 - }
 - 
 - InterfaceAsPromised.prototype = Object.create(Interface.prototype)
 - 
 - InterfaceAsPromised.prototype.question = function (question, callback) {
 -   if (typeof callback === 'function') {
 -     return Interface.prototype.question.call(this, question, callback)
 -   }
 - 
 -   var self = this
 -   return new Promise(function (resolve) {
 -     Interface.prototype.question.call(self, question, resolve)
 -   })
 - }
 - 
 - objectAssign(exports, readline, {
 -   Interface: InterfaceAsPromised,
 -   createInterface: function (input, output, completer, terminal) {
 -     if (arguments.length === 1) {
 -       return new InterfaceAsPromised(input)
 -     }
 - 
 -     return new InterfaceAsPromised(input, output, completer, terminal)
 -   }
 - })
 
 
  |