onRequestPermissionsResult has an empty permission and grantResults arrays, even when permission is granted

I understand from the Android docs that the permissions and grantResults arrays will be empty in onRequestPermissionsResult() if the dialog is cancelled, but in my case, the dialog shows up, I allow the location permissions, and then it shows the toast because the permissions and grantResults arrays are empty.

What might be causing this?

Here is the code requesting and receiving the permission:

    private fun requestLocationPermission() {
        ActivityCompat.requestPermissions(
                this,
                arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
                MY_PERMISSION_ACCESS_FINE_LOCATION
        )
    }

    override fun onRequestPermissionsResult(requestCode: Int,
                                            permissions: Array<out String>,
                                            grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (requestCode == MY_PERMISSION_ACCESS_FINE_LOCATION) {
            if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)
                bindLocationManager()
            else
                Toast.makeText(this, "Please turn on location access", Toast.LENGTH_LONG).show()
        }

    }