code: @Override
    public <T> T run(long timeout, TimeUnit unit,
                     Consumer<Result<T>> task)
    {
      try (OutboxAmp outbox = OutboxAmp.currentOrCreate(this)) {
        ResultFuture<T> future = new ResultFuture<>();
        
        task.accept(future);
        
        return future.get(timeout, unit);
      }
    }
docs: Run a task that returns a future in an outbox context.