Lambda functions and pderivop



I'm trying to use lambda functions to replace instances of pderivop
from the pdiff package and I've encountered some inconsistent
behavior.
Here's my workflow,

in > load(pdiff);

in > f(x);
out> f(x)

If I use subst on an operator everything works fine.
in > subst(g,f,%);
out> g(x)

if I use a lambda function to substitute for an operator it works fine too.
in > subst(lambda([y], y*h(y)), g,%);
out> x * (h(x)

Now with pderivop.
I can use subst to replace an instance of pderivop with another operator.
in > diff(h(x),x);
out> pderivop(h,1)(x)
in > subst(f, pderivop(h,1),%);
out> f(x)

If I try to replace an instance of pderivop with a lambda function,
the lambda function doesn't get applied correctly.
in > diff(g(x),x);
out> pderivop(g,1)(x)
in > subst(lambda([y],y*k(y)), pderivop(h,1),%);
out> lambda([y], y*k(y))(x)

I can get around this by using an intermediate function.

in > diff(g(x),x);
out> pderivop(g,1)(x)
in > subst(tempFunction, pderivop(h,1),%);
out> tempFunction(x)
in > subst(lambda([y],y*k(y)), tempFunction,%);
out> x*k(x)

If anyone can tell me what I'm doing wrong, or help me understand
what's going on here, that would be great.  Thanks,

Derek