To sum it up:
var sampleStart;
...
if (hasTrailTime) {
sampleStart = JulianDate.addSeconds(time, -trailTime, new JulianDate());
}
....
if (!hasTrailTime || JulianDate.greaterThan(start, sampleStart)) {
sampleStart = start;
}
so when hasTrailTime is false it is using a sampleStart variable which is uninitialized causing the render process to stop with an exception.