def my_awesome_application(environ):
    # do stuff
    yield b'200 OK', [], ["Hello, World!"]

def my_middelware(app):
    def wrapper(environ):
        # maybe edit environ
        try:
            status, headers, body = yield app(environ)
            # maybe edit response:
            # body = (piglatin(data) for data in body)
            return status, headers, body
        except:
            # maybe handle error
        finally:
            # maybe release resources

def my_server(app, httpreq):
    environ = wsgi.make_environ(httpreq)

    def process_response(result):
        status, headers, body = result
        write_headers(httpreq, status, headers)
        Coroutine(body, body_trampoline, finish_response)

    def finish_response(result):
        # cleanup, if any

    Coroutine(app(environ), app_trampoline, process_response)
