Разбираюсь с MVVM, а конкретно с Caliburn Micro.  За основу взял  
пример .  Хотел бы уточнить один момент.
В классе BookService, автор создает метод GetData 
public void GetData(Action<BindableCollection<IBook>, Exception> callback)
    {
        callback(_books, null);
    }
И затем вызывает этот метод в ShellViewModel вот таким образом
public ShellViewModel(IBookService dataService)
    {
        _bookDataService = dataService;
        _bookDataService.GetData(
            (items, error) =>
            {
                Books = items;
            });
    }
 public BindableCollection<IBook> Books { get; set; }
На сколько я понимаю, данный метод производит загрузку данных в коллекцию Book, но как он это делает я не совсем понимаю. Подскажите, пожалуйста, как работает данный метод