anchor.diff:    FullQuery = list_to_atom("fdb_future_get_" ++ atom_to_list(FQuery)),
     apply(fdb_nif, FullQuery, [F]).
   
  -wait_non_blocking(F, false) ->
  +wait_non_blocking({false,F}) ->
     Ref = make_ref(),
  -  maybe_fdb_do([
  -  fun ()-> fdb_nif:send_on_complete(F,self(),Ref),
  -    receive
  +  maybe_do([
  +   fun ()-> fdb_nif:send_on_complete(F,self(),Ref) end,
  +   fun () -> receive
         Ref -> {ok, F}
         after ?FUTURE_TIMEOUT -> {error, timeout}
       end
     end]);
  -wait_non_blocking(F, true) ->
  -  {ok, F};
  -wait_non_blocking(_, Error) ->
  -  Error.
  -
  +wait_non_blocking({true,F}) ->
  +  {ok, F}.
  +
  
positive.code:   handle_transaction_attempt(CommitResult).
  
  attempt_transaction(DbHandle, DoStuff) ->
    maybe_fdb_do([
    fun() -> fdb_nif:fdb_database_create_transaction(DbHandle) end,
    fun(Tx) -> 
        Result = DoStuff({tx, Tx}),
  
negative.code: next(Iterator = #iterator{tx = Transaction, iteration = Iteration, select = Select}) ->
    {FstKey, FstIsEq, FstOfs} = fst_gt(Select#select.gt, Select#select.gte),
    {LstKey, LstIsEq, LstOfs} = lst_lt(Select#select.lt, Select#select.lte),
    maybe_do([
     fun() -> fdb_nif:fdb_transaction_get_range(Transaction, 
        FstKey, FstIsEq, Select#select.offset_begin + FstOfs,
        <<LstKey/binary>>, LstIsEq, Select#select.offset_end + LstOfs,
  