Working network detection, implemented using AT+CREG? and pattern matching on the GSM module.  This was more straightforward and reliable than an arbitrary timeout on the controller.  The disadvantage is that the GSM module locks the bus while it is handling an 'open stream' RPC and waiting for network (in practice I have seen this take up to 9 seconds, the maximum timeout in the matching code is about 30 seconds).  RPC callbacks would circumvent this.