promisify.ts 649 B

123456789101112131415161718192021222324252627282930313233
  1. import {
  2. Agent,
  3. ClientRequest,
  4. RequestOptions,
  5. AgentCallbackCallback,
  6. AgentCallbackPromise,
  7. AgentCallbackReturn
  8. } from './index';
  9. type LegacyCallback = (
  10. req: ClientRequest,
  11. opts: RequestOptions,
  12. fn: AgentCallbackCallback
  13. ) => void;
  14. export default function promisify(fn: LegacyCallback): AgentCallbackPromise {
  15. return function(this: Agent, req: ClientRequest, opts: RequestOptions) {
  16. return new Promise((resolve, reject) => {
  17. fn.call(
  18. this,
  19. req,
  20. opts,
  21. (err: Error | null | undefined, rtn?: AgentCallbackReturn) => {
  22. if (err) {
  23. reject(err);
  24. } else {
  25. resolve(rtn);
  26. }
  27. }
  28. );
  29. });
  30. };
  31. }