docs: function(fn) {
    if (promisify.isPromise(fn))
      return fn;
    if (typeof fn !== 'function')
      return promisify.Promise.resolve(fn);
    return new Promise((resolve, reject) => {
      try {
        const o = fn();
        if (promisify.isPromise(o)) {
          o.then(v => resolve(v))
              .catch((e) => reject(e));
        } else resolve(o);
      } catch (e) {
        reject(e);
      }
    });
  }