catch Throwable to help recover from OOME