Transform.Rotate in X-axis

I faced up with problem of strange behaviour on transform.Rotate method in X-axis rotation.

JScript code is:

function Update () {
	transform.Rotate(30 * Time.deltaTime, 0, 0);
}

Strange behaviour: it makes object incremently rotates to 90 degrees in X-axis, then instantly rotates object in Y and Z axis in 180 degrees, then makes object decremently rotates to 270 degrees, then instantly rotates object in Y and Z axis back to 0 degrees and repeat from begining. Why?

In case of rotating in other axis:

function Update () {
     transform.Rotate(0, 30 * Time.deltaTime, 0);
}

or:

function Update () {
     transform.Rotate(0, 0, 30 * Time.deltaTime);
}

it works perfect - always incremently rotates object in appropriate axis and does not affect other axises.

It’s because of converting quaternions (which is what’s actually used internally for rotations) to euler angles for display. The results are not wrong; (90, 0, 0) is the same as (90, 180, 180). There’s more than one way to correctly display the euler angles rotation.