I think it is worth documenting the fact that this done() function can get called any number of times.  Or adding code to ensure that it is only called once.  Rather than changing the boot() function to ensure that it doesn't boot twice, you might (instead or also) change this to ensure that it doesn't call done() twice.

Activity handling is strangely different at startup time than it is at other times and it is hard to capture that in a good abstraction. So compensate by adding some docs for this check() function expaining when it can emit events and when it calls the done callback.