You make it sounds like I deliberately don't want to do the right thing...
I don't like having to hack around trying to fit a square in a round box but sometimes the choice is not mine, I am all for a nice an clean api but it means removing the queue right ?
The queue is a hack if think you can agree on this and its first issue is that it needs to be drained but it has its uses.

Here is what it might look like without it and with a proper callback system in place:
```ruby
module Celluloid::Probe
  def self.actor_created(actor)
    trigger_event(:actor_created, actor)
  end
  
  def self.on_event(what, &block)
    @callbacks ||= {}
    @callbacks[what] ||= []
    @callbacks[what] << block
  end

  def self.trigger_event(name, *args)
    @callbacks[name].each do |cb|
      cb.call(*args)
    end
  end
end
```

If this is what you were thinking about then here is the problem I tried to explain:

```ruby
Celluloid::Probe.on_event(:actor_created) do |actor|
  sleep 1
end
```
If you do that you just screwed up celluloid event dispatching, that may be less obvious than a sleep but you get the idea.
If that's fine with you then that's fine with me I will change the pull request to match this but I see that as a minefield really to blow up.


I just gave another try to use notification but there is another problem: the first actor to be spawned will trigger an actor_created event and this will happens when the fanout actor is created :)
I just don't see how you can monitor a system using itself in this case (even ignoring the other issues I had).