Describe the bug
This is basically the same issue as #15543 / #15786, however this time it happens when using the keyboard shortcut for block deletion and not when using the UI.
To reproduce
Steps to reproduce the behavior:
Error message:
TypeError: Cannot read property 'name' of null
at isPossibleTransformForSource (https://wordpress.local/wp-content/plugins/gutenberg/build/blocks/index.js?ver=1563205142:7775:84)
at https://wordpress.local/wp-content/plugins/gutenberg/build/blocks/index.js?ver=1563205142:7845:14
at _loop (https://wordpress.local/wp-content/plugins/gutenberg/build/blocks/index.js?ver=1563205142:7966:9)
at findTransform (https://wordpress.local/wp-content/plugins/gutenberg/build/blocks/index.js?ver=1563205142:7974:5)
at https://wordpress.local/wp-content/plugins/gutenberg/build/blocks/index.js?ver=1563205142:7844:14
at arrayFilter (https://wordpress.local/wp-content/plugins/gutenberg/vendor/lodash.e6dd46ff.js:582:11)
at filter (https://wordpress.local/wp-content/plugins/gutenberg/vendor/lodash.e6dd46ff.js:9173:14)
at getBlockTypesForPossibleFromTransforms (https://wordpress.local/wp-content/plugins/gutenberg/build/blocks/index.js?ver=1563205142:7842:99)
at getPossibleBlockTransformations (https://wordpress.local/wp-content/plugins/gutenberg/build/blocks/index.js?ver=1563205142:7941:37)
at BlockSwitcher.render (https://wordpress.local/wp-content/plugins/gutenberg/build/block-editor/index.js?ver=1563205142:16490:241)
Expected behavior
Block is removed without the editor crashing.
Screenshots

Additional context
cc @aduth because you were very helpful and patient the last time this happened :-) Maybe you have an idea here?
I wasn't able to reproduce:

After deleting using the keyboard shortcut the button inserter displays again. Are there any steps when reproducing that I might be missing, @swissspidy?
Weird. It's actually pretty straightforward. I also recorded a quick video now: https://cloudup.com/cnMYyRdh2X3
More additional context:
Going through the stack trace it seems like wp.data.select( 'core/block-editor' ).getBlocksByClientId() returns [ null ] after the block removal, causing things like getPossibleBlockTransformations( blocks ) in BlockSwitcher to fail.
I could reproduce this in the last plugin release, but not in master. That being said, even if it's now fixed, I'd not want to consider it as closed until understanding what the issue was.
I've seen it before that getBlocksByClientId can return [ null ]. This shouldn't be expected. I'm having trouble finding where it was that I encountered this before. There's possibly some race conditions (possibly in nested blocks or with the async rendering of blocks) that cause a desync between the block data and the block order (block-editor's blocks.byClientId and blocks.order state). There are some higher-order reducers there operating with cascading effects in nested blocks (and especially removals) that are suspect. I think @youknowriad mentioned some potential "orphan" issues he had encountered recently in some unrelated work (maybe his changes were the fix?).
I ran out of time while I was debugging it, but would like to revisit it tomorrow.
My changes to fix the "orphan" issues has landed in the previous release, so might be something different. This could be something similar to undo/redo issues where we reference block IDs that were removed in reducers other than the blocks reducer.
Can't reproduce this anymore.
Most helpful comment
I could reproduce this in the last plugin release, but not in
master. That being said, even if it's now fixed, I'd not want to consider it as closed until understanding what the issue was.I've seen it before that
getBlocksByClientIdcan return[ null ]. This shouldn't be expected. I'm having trouble finding where it was that I encountered this before. There's possibly some race conditions (possibly in nested blocks or with the async rendering of blocks) that cause a desync between the block data and the block order (block-editor'sblocks.byClientIdandblocks.orderstate). There are some higher-order reducers there operating with cascading effects in nested blocks (and especially removals) that are suspect. I think @youknowriad mentioned some potential "orphan" issues he had encountered recently in some unrelated work (maybe his changes were the fix?).I ran out of time while I was debugging it, but would like to revisit it tomorrow.