Ooooh, an initializer with such side-effect, hmh... I always consider that to be a smell. How about adding some 'initialize' method which spawns of the compression loop, then does the file listing & filling the queue (not in a thread, but as-is), and as such returns `unit Lwt.t`?