Q:

Lumen callback on completed download

I created a download route from which my client successfully downloads the file by adding the following code to /app/Http/routes.php:
$app->get('/dl', function() use ($app){
    return response()->download(getcwd() . "/targetfile");
});

but now I'd like to somehow have a callback be executed once the file transfer has been complete for a given instance of the get request. How would I do that? 
To be a little more specific I'm trying to delete the file once it has been downloaded but this doesn't work:
$app->get('/dl', function() use ($app){
    unlink(getcwd() . "/targetfile");
    return response()->download(getcwd() . "/targetfile");
});

A:

Answer to original Question
So in order to have a 'callback' once a response has been sent you use a so-called 'terminable' middleware. 
In order for a middleware to be terminable:
1) it has to be global; I.E registered with the middleware function instead of the routeMiddleware
$app->middleware([
    App\Http\Middleware\Myterminable::class
]);

2) It has to have the method 'terminate ($request, $response)' this is the method that will be called once the response has been sent.
public function terminate($request, $response)
{
    // your code here
}

An alternative
A global middleware seems to be like a waste of computation resources as it's called for every request/response pair so instead I just looked through Lumen's code to find that the download method is actually returning an instance of
Symfony\Component\HttpFoundation\BinaryFileResponse;

On which I called 
deleteFileAfterSend(true); 

Which served my original goal
return response()->download(getcwd() . "/targetfile")->deleteFileAfterSend(true);

