There are three problems.
1. Although it is spec'ed to handle GMT+8:30, what it returns is a simple timezone with the ID "GMT" instead of "GMT+8:30". So any subsequent creation from that zone id will fail.
2. Some zones (since 1970) have non-zero seconds, so it should also handle GMT+8:30:21.
3. When it fails, it should return a zone with ID "Etc/Unknown"
The fix was made as a part of #5990.