anchor.diff:                  Else ->
                       throw(Else)
               end
  +    catch
  +        error:badarg ->
  +            recover(Key)
       end.
   
   
  
positive.code: 
  
  open(Key) ->
      case ets_lru:lookup_d(?CACHE, Key) of
          {ok, _} = Resp ->
              Resp;
          _ ->
  
negative.code:     DbName = mem3:dbname(ShardDbName),
      gen_server:cast(?OPENER, {evict, DbName, DDocIds}).
  
  
  recover({DbName, validation_funs}) ->
      {ok, DDocs} = fabric:design_docs(mem3:dbname(DbName)),
      Funs = lists:flatmap(fun(DDoc) ->
          case couch_doc:get_validate_doc_fun(DDoc) of
              nil -> [];
              Fun -> [Fun]
          end
      end, DDocs),
      {ok, Funs};
  recover({DbName, DDocId}) ->
      fabric:open_doc(DbName, DDocId, []).
  