diff -r Poet.old/Mason/Plugin/Request.pm Poet/Mason/Plugin/Request.pm
23,27c23,29
<     $self->res->status(200) if !$self->res->status;
<     $self->res->content_type(
<         $conf->get( 'server.default_content_type' => 'text/html' ) )
<       if !$self->res->content_type();
<     $self->res->content( $result->output );
---
>     unless (ref($result) eq 'CODE') {
> 	$self->res->status(200) if !$self->res->status;
> 	$self->res->content_type(
> 	    $conf->get( 'server.default_content_type' => 'text/html' ) )
> 	if !$self->res->content_type();
> 	$self->res->content( $result->output );
>     }
diff -r Poet.old/Mason.pm Poet/Mason.pm
50,52c50,54
<         $m->run( $class->_psgi_comp_path($req),
<             $class->_psgi_parameters($req) );
<         $m->res;
---
>         {
> 	    code => $m->run( $class->_psgi_comp_path($req),
> 			    $class->_psgi_parameters($req) ),
> 	    res => $m->res
> 	};
67c69
<     return $response->finalize;
---
>     return (ref($response->{code}) eq 'CODE') ? $response->{code} : $response->{res}->finalize;
