- status: open --> pending
There is a race condition in which BrowserScreen.dismiss() may not dismiss a LogoutScreen. When a LogoutScreen instance is instantiated via Facebook.logout(), it calls the super() constructor for its parent class (BrowserScreen) with a URL to fetch. This fetch operation occurs immediately from the BrowserScreen constructor.
Depending upon network latency, the fetch may return so quickly that the LogoutScreen has not yet had a chance to be placed on the display stack yet in Facebook.logout(). When LogoutScreen.hasLogoutStatus() is called and attempts to dismiss the browser screen by calling dismiss(), the screen is not yet on the display stack so nothing happens. Facebook.logout() then places the screen on the stack. The end result is that the screen stays visible and is never dismissed.
My recommendation to fix this is to restructure how BrowserScreen works so that the specified URL is not fetched until the BrowserScreen's onDisplay() handler is called.