import { GeneratorFunction } from '../generator' import { Operation, Wrapper, isOfKind, isOperation, coreNamespace } from './operation' import { call } from './call' const kind = `${coreNamespace}/defer` export function defer(func: GeneratorFunction, ...args: Args): Wrapper export function defer(operation: Operation): Wrapper export function defer(arg0: Operation | GeneratorFunction, ...args: Args) { return { kind, operation: isOperation(arg0) ? arg0 : call(arg0, ...args) } } export const isDefer = isOfKind(kind)