The original RenderWidgetHostViewGuest::Destroy() called DeleteSoon to defer its own deletion. This is apparently due to some kind of re-entrancy issue, of which nobody can remember the details. RenderWidgetHostViewChildFrame::Destroy() does the same because it was patterned off of RenderWidgetHostViewGuest.
The deferred deletion causes awkward conditions sometimes when RenderWidgetHostViews have had Destroy called, but still exist, and somebody tries to interact with them. It would be easier if they could delete themselves outright to eliminate the 'destroyed but not deleted' state.
Comment 1 by bugdroid1@chromium.org
, Feb 25 2017