Firstly, understand that the Spark has 3 different thresholds in regards to the
battery. The first one is just a warning that the
battery is getting low. I think by default this is set to 30 percent, but can be changed in the DJI Go 4 interface. The second level is dynamically calculated based on how far away you are and how much
battery is left. When this threshold is hit, a Low
Battery RTH initiated after a 10 second warning where a user can choose to cancel it. Then the final one is a CRITICAL LOW
BATTERY. It is at this point that the Spark then decides to start decending immediately in its current location. In this Critical Low
Battery situation, you can still pilot the Spark and control where it is at and you can use the throttle to maintain altitude. However, if you don't use the throttle, it will continue to descend.
Timothy, both of the behaviors you mention are the documented procedures that occur when an RTH is initiated. When an RTH is initiated (whether it is by a low
battery, becoming disconnected from the controlling device, or intiated by a user), it takes different actions depending upon the distance it is from its home point as well as the settings in the DJI Go 4 app. The manual has a great section outlining this procedure.
Check out the bottom of pg 14 in the manual:
https://dl.djicdn.com/downloads/Spark/20170928/Spark+User+Manual+V1.4.pdf
If interested, I have also put together a video on the topic that has been fairly well received.