# Buggy code
def downloadStream(self):
    readable_fh, writable_fh = os.pipe()
    with os.fdopen(readable_fh, "r") as readable:
        with os.fdopen(writable_fh, "w") as writable:

            def writer():
                try:
                    if self.content is not None:
                        writable.write(self.content)
                    elif self.version:
                        headers = self._s3EncryptionHeaders()
                        key = self.outer.filesBucket.get_key(
                            self.fileID, validate=False
                        )
                        for attempt in retry_s3():
                            with attempt:
                                key.get_contents_to_file(
                                    writable, headers=headers, version_id=self.version
                                )
                    else:
                        assert False
                finally:
                    # This close() will send EOF to the reading end and ultimately cause
                    # the yield to return. It also makes the implict .close() done by the
                    #  enclosing "with" context redundant but that should be ok since
                    # .close() on file objects are idempotent.
                    writable.close()

            thread = ExceptionalThread(target=writer)
            thread.start()
            yield readable
            thread.join()


# Traceback (toil.jobStores.abstractJobStore.NoSuchFileException)
cmarkello@c1master1:~$ toil clean azure:hgvm:hgvmevaljobstore
2016-05-13 23:08:36,438 INFO:toil.lib.bioio: Logging set at level: INFO
2016-05-13 23:08:36,445 INFO:toil.utils.toilClean: Parsed arguments
2016-05-13 23:08:36,445 INFO:toil.utils.toilClean: Checking if we have files for toil
2016-05-13 23:08:36,525 INFO:requests.packages.urllib3.connectionpool: Starting new HTTPS connection (1): hgvm.table.core.windows.net
2016-05-13 23:08:36,724 INFO:requests.packages.urllib3.connectionpool: Starting new HTTPS connection (1): hgvm.blob.core.windows.net
Traceback (most recent call last):
File "/usr/local/bin/toil", line 9, in <module>
load_entry_point('toil==3.2.0a2', 'console_scripts', 'toil')()
File "/usr/local/lib/python2.7/dist-packages/toil/utils/toilMain.py", line 30, in main
module.main()
File "/usr/local/lib/python2.7/dist-packages/toil/utils/toilClean.py", line 53, in main
jobStore = Toil.loadOrCreateJobStore(options.jobStore)
File "/usr/local/lib/python2.7/dist-packages/toil/common.py", line 589, in loadOrCreateJobStore
return AzureJobStore(account, namePrefix, config=config)
File "/usr/local/lib/python2.7/dist-packages/toil/jobStores/azureJobStore.py", line 120, in __init__
super(AzureJobStore, self).__init__(config=config)
File "/usr/local/lib/python2.7/dist-packages/toil/jobStores/abstractJobStore.py", line 141, in __init__
with self.readSharedFileStream("config.pickle") as fileHandle:
File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/usr/local/lib/python2.7/dist-packages/toil/jobStores/azureJobStore.py", line 318, in readSharedFileStream
raise NoSuchFileException(sharedFileID)
toil.jobStores.abstractJobStore.NoSuchFileException: File 'a77581f6_ad82_5142_acb7_5a6b01eab3fb' does not exist

# Fixed code
def downloadStream(self):
    info = self

    class DownloadPipe(ReadablePipe):
        def writeTo(self, writable):
            if info.content is not None:
                writable.write(info.content)
            elif info.version:
                headers = info._s3EncryptionHeaders()
                key = info.outer.filesBucket.get_key(info.fileID, validate=False)
                for attempt in retry_s3():
                    with attempt:
                        key.get_contents_to_file(
                            writable, headers=headers, version_id=info.version
                        )
            else:
                assert False

            thread = ExceptionalThread(target=writer)
            thread.start()
            yield readable
            thread.join()