I tried to disable Softdevice from within an observer (kind ble_observer.) It seems to crash. Instead, I just schedule another task to run (and disable the Softdevice) after the observer completes. That seems to work better. Should it be stated in the documentation: you shouldn't disable the SD from within an observer?
I can't say whether the call to nrf_sdh_disable_request() returned an error, since my code is not checking the result. But a following assert(!nrf_sdh_is_enabled()) did not assert, so I presume no error was returned.
The example/multiprotocol/ble_gzl... does not exercise this problem, since it disables SD from the main context.
My application is multiprotocol. As soon as a user uses BT to find, connect, and write some characteristic, they are done with BT, which I observe, and then want to disable SD.