the main thread needs to abort too... (doesn't it?)
deal with race conditions reported by thread-sanitizer
use fast logic for sereal