Only delete a Deferrable's promise if it's in a non-pending state. Otherwise every call to setDeferredStatus('deferred') erases the stored callbacks and breaks some reconnection logic in the WebSocket transport.