code: function get_property(X, wid, prop, type, cb) {
      if (typeof type === 'function') {
          cb = type;
          type = undefined;
      }
  
      async.parallel(
          [
              function get_prop_atom(cb) {
                  if (typeof prop === 'string') {
                      X.InternAtom(false, prop, cb);
                  } else {
                      cb(undefined, prop);
                  }
              },
              function get_type_atom(cb) {
                  if (!type) {
                      /* AnyPropertyType */
                      type = 0;
                  }
  
                  if (typeof type === 'string') {
                      X.InternAtom(false, type, cb);
                  } else {
                      cb(undefined, type);
                  }
              }
          ],
          function(err, results) {
              if (err) {
                  return cb(err);
              }
  
              _get_property(X, wid, results[0], results[1], cb);
          }
      );
  }
docs: /*
  @param X client
  @param wid
  @param prop (name or atom)
  @param type (name or atom) (optional)
  @param cb. function(err, res)