WeakReference<Callback> is passed into constructors for testing purposes.