I can not find it anywhere in documentation, but the LSTM engine does not seem to support the (legacy engine) orientation and script detection. I recall some hints as to not supporting the script detection but nothing about orientation...
I found that (using oem 1 = LSTM), the API call to OSDetect(&osr) on rotated image returns zero rotation. When using the 'legacy' engine (oem 0), the same call returns the correct image rotation (in my case 90 degrees) plus reasonable confidence.
Similarly, when iterating over the results in 'legacy' engine (oem 0) using mode 1 (Automatic page segmentation with OSD), the 'legacy' engine returns both the grapheme character and orientation. But with LSTM engine, I find (in debugger) that graphemes have a valid character, but their bounding box is empty (0,0,0,0), because internally in
it->BoundingBox(tesseract::RIL_SYMBOL, &left, &top, &right, &bottom)
the code runs into 'bogus' coordinates and clips them all to zero.