anchor.diff:          DbNameList = binary_to_list(DbName),
           case check_dbname(Server, DbNameList) of
           ok ->
  -            {ok, Server2} = maybe_close_lru_db(Server),
  -            Filepath = get_full_filename(Server, DbNameList),
  -            {noreply, open_async(Server2, From, DbName, Filepath, Options)};
  +            case maybe_close_lru_db(Server) of
  +            {ok, Server2} ->
  +                Filepath = get_full_filename(Server, DbNameList),
  +                {noreply, open_async(Server2, From, DbName, Filepath, Options)};
  +            CloseError ->
  +                {reply, CloseError, Server}
  +            end;
           Error ->
               {reply, Error, Server}
           end;
  
positive.code:     ok ->
          case ets:lookup(couch_dbs, DbName) of
          [] ->
              {ok, Server2} = maybe_close_lru_db(Server),
              {noreply, open_async(Server2, From, DbName, Filepath,
                  [create | Options])};
          [#db{fd=open}=Db] ->
              % We're trying to create a database while someone is in
              % the middle of trying to open it. We allow one creator
  
negative.code:         [] ->
              % db was deleted during async open
              {reply, ok, Server};
          [#db{fd=ReqType, compactor_pid=Froms}=Db] ->
              [gen_server:reply(From, Error) || From <- Froms],
              couch_log:info("open_result error ~p for ~s", [Error, DbName]),
              true = ets:delete(couch_dbs, DbName),
  