code: function getParent(path, opts={}) {
     const dirpath = dirname(path);
     return getInode(dirpath, opts)
     .then((inode) => {
        if (!inode) {
           return {'error': 'Failed to get parent', 'errno': EREMOTEIO};
        }
        if (inode.type !== MUTABLE_DATUM_DIR_TYPE) {
           return {'error': 'Not a directory', 'errno': ENOTDIR}
        }
        else {
           return inode;
        }
     },
     (error_resp) => {
        return {'error': 'Failed to get inode', 'errno': EREMOTEIO};
     });
  }
docs: /*
  Given a path, get its parent directory
  Make sure it's a directory.
  
  @param ds (Object) a datastore context
  @param path (String) the path to the inode in question
  @param opts (Object) lookup options
  .extended (Bool) whether or not to include the entire path's inode inforamtion
  .force (Bool) if True, then ignore stale inode errors.
  .blockchain_id (string) this is the blockchain ID of the datastore owner (if different from the session)
  .ds (datastore context) this is the mount context for the datastore, if different from one that we have cached
  
  Asynchronous; returns a Promise